{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/debounce/index.js","webpack:///./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js","webpack:///./node_modules/just-extend/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./app/javascript/channels/index.js","webpack:///./app/javascript/channels sync _channel\\.js$","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/date-now/index.js","webpack:///./node_modules/@hotwired/stimulus/dist/stimulus.js","webpack:///./app/javascript/controllers/application.js","webpack:///./app/javascript/controllers/add_provider_controller.js","webpack:///./app/javascript/controllers/admin_controller.js","webpack:///./app/javascript/controllers/autosubmit.js","webpack:///./node_modules/sortablejs/modular/sortable.esm.js","webpack:///./app/javascript/controllers/drag_controller.js","webpack:///./node_modules/dropzone/dist/dropzone.mjs","webpack:///./app/javascript/helpers/index.js","webpack:///./app/javascript/controllers/dropzone_controller.js","webpack:///./app/javascript/controllers/filter_tasks_controller.js","webpack:///./app/javascript/controllers/hello_controller.js","webpack:///./app/javascript/controllers/process_flows_controller.js","webpack:///./app/javascript/controllers/providers_controller.js","webpack:///./app/javascript/controllers/push_to_tools_controller.js","webpack:///./app/javascript/controllers/removals_controller.js","webpack:///./app/javascript/controllers/remove_provider_controller.js","webpack:///./app/javascript/controllers/sn_query_form_controller.js","webpack:///./app/javascript/controllers/tasks_controller.js","webpack:///./app/javascript/controllers/modal_controller.js","webpack:///./app/javascript/controllers/insights_controller.js","webpack:///./node_modules/chartkick/dist/chartkick.esm.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@kurkle/color/dist/color.esm.js","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.js","webpack:///./node_modules/chart.js/auto/auto.js","webpack:///./node_modules/date-fns/toDate.mjs","webpack:///./node_modules/date-fns/constructFrom.mjs","webpack:///./node_modules/date-fns/_lib/defaultOptions.mjs","webpack:///./node_modules/date-fns/getDefaultOptions.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/localize.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildMatchFn.mjs","webpack:///./node_modules/date-fns/locale/en-US/_lib/match.mjs","webpack:///./node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","webpack:///./node_modules/date-fns/locale/en-US.mjs","webpack:///./node_modules/date-fns/_lib/format/longFormatters.mjs","webpack:///./node_modules/date-fns/_lib/protectedTokens.mjs","webpack:///./node_modules/date-fns/transpose.mjs","webpack:///./node_modules/date-fns/parse/_lib/Setter.mjs","webpack:///./node_modules/date-fns/parse/_lib/Parser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/EraParser.mjs","webpack:///./node_modules/date-fns/constants.mjs","webpack:///./node_modules/date-fns/parse/_lib/constants.mjs","webpack:///./node_modules/date-fns/parse/_lib/utils.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/YearParser.mjs","webpack:///./node_modules/date-fns/startOfWeek.mjs","webpack:///./node_modules/date-fns/getWeekYear.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.mjs","webpack:///./node_modules/date-fns/startOfISOWeek.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/QuarterParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/MonthParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.mjs","webpack:///./node_modules/date-fns/startOfWeekYear.mjs","webpack:///./node_modules/date-fns/getWeek.mjs","webpack:///./node_modules/date-fns/setWeek.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.mjs","webpack:///./node_modules/date-fns/getISOWeekYear.mjs","webpack:///./node_modules/date-fns/startOfISOWeekYear.mjs","webpack:///./node_modules/date-fns/getISOWeek.mjs","webpack:///./node_modules/date-fns/setISOWeek.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/DateParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.mjs","webpack:///./node_modules/date-fns/addDays.mjs","webpack:///./node_modules/date-fns/setDay.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/DayParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/LocalDayParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.mjs","webpack:///./node_modules/date-fns/getISODay.mjs","webpack:///./node_modules/date-fns/setISODay.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/ISODayParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/AMPMParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/MinuteParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/SecondParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.mjs","webpack:///./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.mjs","webpack:///./node_modules/date-fns/parse/_lib/parsers.mjs","webpack:///./node_modules/date-fns/parse.mjs","webpack:///./node_modules/date-fns/parseISO.mjs","webpack:///./node_modules/date-fns/isDate.mjs","webpack:///./node_modules/date-fns/isValid.mjs","webpack:///./node_modules/date-fns/startOfDay.mjs","webpack:///./node_modules/date-fns/differenceInCalendarDays.mjs","webpack:///./node_modules/date-fns/startOfYear.mjs","webpack:///./node_modules/date-fns/getDayOfYear.mjs","webpack:///./node_modules/date-fns/_lib/addLeadingZeros.mjs","webpack:///./node_modules/date-fns/_lib/format/lightFormatters.mjs","webpack:///./node_modules/date-fns/_lib/format/formatters.mjs","webpack:///./node_modules/date-fns/format.mjs","webpack:///./node_modules/date-fns/addMilliseconds.mjs","webpack:///./node_modules/date-fns/addSeconds.mjs","webpack:///./node_modules/date-fns/addMinutes.mjs","webpack:///./node_modules/date-fns/addHours.mjs","webpack:///./node_modules/date-fns/addWeeks.mjs","webpack:///./node_modules/date-fns/addMonths.mjs","webpack:///./node_modules/date-fns/addQuarters.mjs","webpack:///./node_modules/date-fns/addYears.mjs","webpack:///./node_modules/date-fns/differenceInMilliseconds.mjs","webpack:///./node_modules/date-fns/_lib/getRoundingMethod.mjs","webpack:///./node_modules/date-fns/differenceInSeconds.mjs","webpack:///./node_modules/date-fns/differenceInMinutes.mjs","webpack:///./node_modules/date-fns/differenceInHours.mjs","webpack:///./node_modules/date-fns/differenceInDays.mjs","webpack:///./node_modules/date-fns/differenceInWeeks.mjs","webpack:///./node_modules/date-fns/compareAsc.mjs","webpack:///./node_modules/date-fns/differenceInCalendarMonths.mjs","webpack:///./node_modules/date-fns/endOfDay.mjs","webpack:///./node_modules/date-fns/endOfMonth.mjs","webpack:///./node_modules/date-fns/isLastDayOfMonth.mjs","webpack:///./node_modules/date-fns/differenceInMonths.mjs","webpack:///./node_modules/date-fns/differenceInQuarters.mjs","webpack:///./node_modules/date-fns/differenceInCalendarYears.mjs","webpack:///./node_modules/date-fns/differenceInYears.mjs","webpack:///./node_modules/date-fns/startOfSecond.mjs","webpack:///./node_modules/date-fns/startOfMinute.mjs","webpack:///./node_modules/date-fns/startOfHour.mjs","webpack:///./node_modules/date-fns/startOfMonth.mjs","webpack:///./node_modules/date-fns/startOfQuarter.mjs","webpack:///./node_modules/date-fns/endOfSecond.mjs","webpack:///./node_modules/date-fns/endOfMinute.mjs","webpack:///./node_modules/date-fns/endOfHour.mjs","webpack:///./node_modules/date-fns/endOfWeek.mjs","webpack:///./node_modules/date-fns/endOfQuarter.mjs","webpack:///./node_modules/date-fns/endOfYear.mjs","webpack:///./node_modules/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.esm.js","webpack:///./node_modules/chartkick/chart.js/chart.esm.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","__webpack_require__","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","_typeof","iterator","obj","constructor","this","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","querySelector","content","cspNonce","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","element","getData","setData","$","Array","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","forEach","input","CustomEvent","fire","preventDefault","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","result","defaultPrevented","dispatchEvent","stopEverything","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","addEventListener","parentNode","AcceptHeaders","createXHR","prepareOptions","processResponse","text","html","xml","json","ajax","options","response","responseText","getResponseHeader","Math","floor","status","success","statusText","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","toUpperCase","indexOf","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","removeChild","DOMParser","replace","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","host","toArray","serializeElement","additionalParam","inputs","elements","disabled","option","selected","checked","map","encodeURIComponent","join","formElements","form","filter","el","allowAction","handleConfirm","confirm","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","removeEventListener","handleMethod","formContent","link","method","action","style","display","body","click","isRemote","handleRemote","button","enctype","FormData","append","args","arguments","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","ajaxPrefilter","originalOptions","start","_rails_loaded","now","func","wait","immediate","context","timestamp","later","last","apply","callNow","factory","sparkMd5","fn","createCommonjsModule","hex_chr","md5cycle","x","k","a","b","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","state","substring","toString","parseInt","md51_array","subarray","Uint8Array","rhex","j","hex","toUtf8","str","test","unescape","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arr","arrayBuffer2Utf8Str","String","fromCharCode","concatenateArrayBuffers","first","second","byteLength","set","buffer","hexToBinaryString","bytes","substr","SparkMD5","reset","clamp","val","max","min","from","to","num","targetArray","sourceArray","begin","end","appendBinary","contents","_buff","_length","_hash","raw","ret","_finish","getState","hash","setState","destroy","hashBinary","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","fileSlice","File","mozSlice","webkitSlice","FileChecksum","file","chunkSize","chunkCount","ceil","size","chunkIndex","_this","md5Buffer","fileReader","FileReader","fileReaderDidLoad","fileReaderDidError","readNextChunk","binaryDigest","base64digest","btoa","readAsArrayBuffer","findElement","root","eventInit","initEvent","toArray$1","isArray","BlobRecord","checksum","attributes","filename","content_type","byte_size","responseType","getMetaValue","requestDidLoad","requestDidError","stringify","blob","direct_upload","directUploadData","toJSON","_xhr","BlobUpload","_blob$directUploadDat","headers","id","DirectUpload","notify","upload","methodName","_len","messages","_key","DirectUploadController","directUpload","dispatch","hiddenInput","insertAdjacentElement","dispatchError","signed_id","progress","loaded","total","alert","_this2","uploadRequestDidProgress","DirectUploadsController","files","controllers","createDirectUploadControllers","startNextController","controller","processingAttribute","submitButtonsByForm","WeakMap","started","didClick","didSubmitForm","didSubmitRemoteElement","tagName","handleFormSubmissionEvent","hasAttribute","disable","removeAttribute","enable","focus","delete","submitForm","ActiveStorage","isCloneable","isUnextendable","extend","deep","extenders","len","extender","base","webpackPolyfill","deprecate","paths","children","channels","require","keys","webpackEmptyContext","req","code","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","then","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","Function","Date","getTime","asyncGeneratorStep","gen","_next","_throw","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","_defineProperty","_createForOfIteratorHelper","allowArrayLike","it","F","_e2","f","normalCompletion","didErr","step","_e3","return","minLen","arr2","_classCallCheck","_defineProperties","_createClass","EventListener","eventTarget","eventName","eventOptions","unorderedBindings","Set","binding","add","_step","extendedEvent","_stopImmediatePropagation","assign","immediatePropagationStopped","extendEvent","_iterator","bindings","handleEvent","sort","left","right","leftIndex","index","rightIndex","Dispatcher","application","eventListenerMaps","Map","eventListeners","eventListener","connect","disconnect","reduce","listeners","concat","fetchEventListenerForBinding","bindingConnected","clearEventListeners","bindingDisconnected","clearEventListenersForBinding","handleError","hasBindings","removeMappedEventListenerFor","eventListenerMap","fetchEventListenerMapForEventTarget","cacheKey","fetchEventListener","createEventListener","parts","defaultActionDescriptorFilters","_ref","prevent","_ref2","_ref3","descriptorPattern","parseEventTarget","eventTargetName","camelize","_","char","namespaceCamelize","capitalize","dasherize","toLowerCase","isSomething","hasProperty","allModifiers","Action","schema","defaultEventNames","getDefaultEventNameForElement","identifier","keyFilter","eventFilter","filters","split","keyFilterDissatisfied","standardFilter","includes","keyMappings","pattern","RegExp","_Array$from","_ref5","typecast","_allModifiers$map2","modifier","ctrl","alt","altKey","shiftKey","descriptorString","trim","parseActionDescriptorString","details","select","textarea","o_O","Binding","actionEvent","prepareActionEvent","willBeInvokedByEvent","applyEventModifiers","invokeWithEvent","actionDescriptorFilters","passes","_i2","_Object$entries","entries","_ref7","currentTarget","logDebugActivity","KeyboardEvent","shouldIgnoreKeyboardEvent","MouseEvent","shouldIgnoreMouseEvent","contains","scope","containsElement","ElementObserver","mutationObserverInit","childList","subtree","mutationObserver","MutationObserver","mutations","processMutations","observe","refresh","takeRecords","matchElementsInTree","_i3","_Array$from2","has","removeElement","_i4","_Array$from3","_element2","addElement","_step2","_iterator2","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","_i5","_Array$from4","node","elementFromNode","processTree","_i6","_Array$from5","elementIsActive","tree","processor","_step3","_iterator3","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","pause","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","Multimap","valuesByKey","some","_ref9","_ref10","_ref11","_ref12","SelectorObserver","_selector","matchesByElement","selectorMatchElement","_this3","selectorMatched","_step4","_iterator4","getKeysForValue","selectorUnmatched","_attributeName","matchedBefore","StringMapObserver","_this4","stringMap","attributeOldValue","_step5","_iterator5","knownAttributeNames","refreshAttribute","_step6","_iterator6","oldValue","getStringMapKeyForAttribute","stringMapKeyAdded","stringMapValueChanged","_oldValue","stringMapKeyRemoved","currentAttributeNames","recordedAttributeNames","attribute","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","_this$refreshTokensFo2","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","getValuesForKey","tokens","_this5","tokenMatched","_this6","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","findIndex","_ref13","_ref14","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","_this7","clear","forToken","connectAction","disconnectAction","ValueObserver","receiver","stringMapObserver","valueDescriptorMap","invokeChangedCallbacksForDefaultValues","hasValue","invokeChangedCallback","writer","defaultValue","valueDescriptorNameMap","_step7","_iterator7","valueDescriptors","_ref16","rawValue","rawOldValue","changedMethodName","changedMethod","reader","_this8","descriptors","hasMethodName","TargetObserver","targetsByName","disconnectAllTargets","_ref17","connectTarget","_ref18","disconnectTarget","_a","_this9","targetConnected","_this10","targetDisconnected","_step8","_iterator8","_step9","_iterator9","readInheritableStaticArrayValues","propertyName","ancestors","getAncestorsForConstructor","definition","getOwnStaticArrayValues","readInheritableStaticObjectPairs","pairs","getOwnStaticObjectPairs","OutletObserver","outletsByName","outletElementsByName","selectorObserverMap","attributeObserverMap","_this11","outletDefinitions","outletName","setupSelectorObserverForOutlet","setupAttributeObserverForOutlet","dependentContexts","observer","disconnectAllOutlets","stopSelectorObservers","stopAttributeObservers","_ref19","outlet","getOutlet","connectOutlet","_ref20","getOutletFromMap","disconnectOutlet","_ref21","hasOutlet","hasOutletController","controllerAttribute","_element","getOutletNameFromOutletAttributeName","updateSelectorObserverForOutlet","_this12","outletConnected","_this13","outletDisconnected","_step10","_iterator10","_step11","_iterator11","_step12","_iterator12","selectorObserver","attributeNameForOutletName","outlets","getSelectorForOutletName","outletAttributeForScope","_this14","find","dependencies","router","controllerConstructor","outletDependencies","identifiers","dependentControllerIdentifiers","contexts","getControllerForElementAndIdentifier","_this15","functionName","bindingObserver","dispatcher","valueObserver","targetObserver","outletObserver","initialize","parentElement","invokeControllerMethod","_key2","bless","properties","shadowConstructor","shadowProperties","getOwnKeys","shadowingDescriptor","getOwnPropertyDescriptor","getShadowedDescriptor","getShadowProperties","shadow","blessedProperties","blessing","getBlessedProperties","getOwnPropertySymbols","getOwnPropertyNames","extendWithReflect","extended","_constructor","_super2","Module","blessDefinition","contextsByScope","connectedContexts","fetchContextForScope","ClassMap","getDataKey","getAll","getAttributeNameForKey","DataMap","Guide","logger","warnedKeysByObject","warnedKeys","warn","attributeValueContainsToken","TargetSet","targetName","_this16","_len2","targetNames","_key3","findTarget","findLegacyTarget","_this17","_len3","_key4","targets","findAllTargets","findAllLegacyTargets","getSelectorForTargetName","findAllElements","targetAttributeForScope","getLegacySelectorForTargetName","_this18","targetDescriptor","targetAttribute","revisedAttributeName","guide","OutletSet","controllerElement","_this19","_len4","outletNames","_key5","findOutlet","_this20","_len5","_key6","findAllOutlets","_this21","queryElements","matchesElement","_this22","Scope","_this23","classes","closest","controllerSelector","documentScope","documentElement","isDocumentScope","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","parseValueForElementAndIdentifier","scopesByIdentifier","fetchScopesByIdentifierForElement","createScopeForElementAndIdentifier","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","unloadIdentifier","connectModule","afterLoad","disconnectModule","connectContextForScope","disconnectContextForScope","defaultSchema","enter","tab","esc","space","up","down","home","page_up","page_down","objectFromEntries","array","memo","_ref22","_ref23","v","Application","_this24","debug","logFormattedMessage","_start","_callee","_context","load","_this25","_len6","rest","_key7","definitions","shouldLoad","loadDefinition","_this26","_len7","_key8","getContextForElementAndIdentifier","groupCollapsed","log","groupEnd","getOutletController","getControllerAndEnsureConnectedScope","outletController","proposeToConnectScopeForElementAndIdentifier","parseValueDefinitionPair","_ref28","_ref29","payload","typeDefinition","typeFromObject","typeObject","hasType","hasDefault","default","fullObject","onlyType","onlyDefault","parseValueTypeConstant","typeFromDefaultValue","parseValueTypeDefault","propertyPath","parseValueTypeObject","typeFromConstant","parseValueTypeDefinition","constant","defaultValuesByType","constantFromType","defaultValueForDefinition","hasCustomDefaultValue","readers","writers","valueDescriptorForTokenAndTypeDefinition","Number","boolean","number","string","writeJSON","Controller","_ref30","_ref30$target","_ref30$detail","_ref30$prefix","prefix","_ref30$bubbles","_ref30$cancelable","_identifier","_application","blessings","classDefinition","_ref24","getAttributeName","targetDefinition","_ref26","findAll","valueDefinitionPairs","propertyDescriptorMap","_this28","valueDefinitionPair","valueDescriptor","_ref27","read","write","propertiesForValueDefinitionPair","outletDefinition","camelizedName","_ref25","outletElement","_this27","Stimulus","messageBoxSuccess","messageBoxSuccessTarget","messageBoxError","messageBoxErrorTarget","provider_id","srcElement","api_key_id","api_key","getElementById","use_bc_credits_if_ooc","classList","remove","provider","messageBox","messageBoxTarget","taskId","title","_x_model","requestSubmit","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","source","getOwnPropertyDescriptors","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","userAgent","navigator","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","on","off","getParentOrHost","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","className","css","prop","defaultView","getComputedStyle","currentStyle","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","list","getElementsByTagName","getWindowScrollingElement","scrollingElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","bottom","height","width","innerHeight","innerWidth","containerRect","elMatrix","scaleX","scaleY","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","Sortable","ghost","dragged","draggable","lastChild","lastElementChild","previousElementSibling","nodeName","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","isRectEqual","rect1","rect2","round","throttle","ms","scrollBy","y","Polymer","Zepto","dom","cloneNode","expando","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","child","rect","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","splice","indexOfObject","animateAll","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","offsetWidth","repaint","easing","animated","defaults","initializeByDefault","PluginManager","mount","plugin","pluginName","pluginEvent","sortable","eventCanceled","cancel","eventNameGlobal","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","item","pullMode","lastPutMode","allEventProperties","_excluded","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","store","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","sum","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","shadowRoot","path","composedPath","idx","_saveInputCheckedState","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","spacer","_ghostIsLast","changed","_ghostIsFirst","firstChild","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","save","dropEffect","_globalDragOver","order","useAnimation","items","utils","is","dst","nextTick","cancelNextTick","detectDirection","plugins","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref4","parentSortable","AutoScroll","forceAutoScrollFallback","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","onEnd","providers","$parcel$interopDefault","$4040acfd8584338d$export$2e2bcd8739ae039","_callbacks","callbacks","makeEvent","$4ca367182776f80b$var$defaultOptions","parallelUploads","uploadMultiple","chunking","forceChunking","parallelChunkUploads","retryChunks","retryChunksLimit","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","thumbnailMethod","resizeWidth","resizeHeight","resizeMimeType","resizeQuality","resizeMethod","filesizeBase","maxFiles","defaultHeaders","clickable","ignoreHiddenFiles","acceptedFiles","acceptedMimeTypes","autoProcessQueue","autoQueue","addRemoveLinks","previewsContainer","disablePreviews","hiddenInputContainer","renameFilename","renameFile","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictUploadCanceled","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","dictFileSizeUnits","tb","gb","mb","kb","init","dzuuid","uuid","dzchunkindex","dztotalfilesize","dzchunksize","dztotalchunkcount","totalChunkCount","dzchunkbyteoffset","chunksUploaded","binaryBody","messageElement","span","innerText","getFallbackForm","resize","srcX","srcY","srcWidth","srcHeight","srcRatio","trgRatio","trgWidth","trgHeight","transformFile","resizeImage","previewTemplate","dragstart","dragend","dragenter","dragover","dragleave","paste","addedfile","previewElement","filesize","_removeLink","removeFileEvent","UPLOADING","removeFile","removedfile","_updateMaxFilesReachedClass","thumbnail","dataUrl","thumbnailElement","errormultiple","processing","processingmultiple","uploadprogress","bytesSent","totaluploadprogress","sending","sendingmultiple","successmultiple","canceled","emit","canceledmultiple","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","$4ca367182776f80b$export$2e2bcd8739ae039","_$4040acfd8584338d$ex","$3ed269f2f0fb224b$export$2e2bcd8739ae039","_super","clickableElements","dropzone","instances","elementOptions","optionsForElement","isBrowserSupported","getExistingFallback","getElement","getElements","accepted","getFilesWithStatus","QUEUED","ADDED","setupHiddenFileInput","hiddenFileInput","visibility","position","addFile","URL","webkitURL","events","updateTotalUploadProgress","getAddedFiles","getUploadingFiles","getQueuedFiles","noPropagation","types","containsFiles","returnValue","efct","clickableElement","elementInside","removeAllFiles","totalUploadProgress","totalBytesSent","totalBytes","getActiveFiles","existingFallback","fieldsString","_getParamName","fields","getFallback","elementListeners","listener","removeEventListeners","cancelUpload","setupEventListeners","selectedSize","selectedUnit","units","unit","getAcceptedFiles","webkitGetAsEntry","_addFilesFromItems","handleFiles","clipboardData","_step13","_iterator13","_step14","_iterator14","isFile","getAsFile","isDirectory","_addFilesFromDirectory","kind","directory","dirReader","createReader","errorHandler","readEntries","_step15","_iterator15","fullPath","isValidFile","uuidv4","_renameFile","_enqueueThumbnail","_errorProcessing","enqueueFile","_step16","_iterator16","processQueue","_thumbnailQueue","_processThumbnailQueue","_processingThumbnail","createThumbnail","$3ed269f2f0fb224b$var$without","cancelIfNecessary","_step17","_iterator17","canvas","resizedDataURL","toDataURL","$3ed269f2f0fb224b$var$ExifRestore","restore","dataURL","dataURItoBlob","fixOrientation","createThumbnailFromUrl","readAsDataURL","mockFile","imageUrl","crossOrigin","resizeThumbnail","onDone","img","loadExif","EXIF","getTag","orientation","resizeInfo","getContext","translate","scale","rotate","PI","$3ed269f2f0fb224b$var$drawImageIOSFix","trgX","trgY","processingLength","queuedFiles","processFiles","processFile","_step18","_iterator18","uploadFiles","_step19","groupedFiles","_getFilesWithXhr","_iterator19","CANCELED","abort","_step20","_iterator20","groupedFile1","_transformFiles","transformedFiles","transformedFile","chunked","_transformedFile","chunks","handleNextChunk","startedChunkCount","dataBlock","retries","_uploadData","finishedChunkUpload","allFinished","SUCCESS","responseHeaders","getAllResponseHeaders","_finished","dataBlocks","_step21","_iterator21","resolveOption","_finishedUploading","ontimeout","_handleUploadError","onprogress","_updateFilesUploadProgress","Accept","headerName","headerValue","_step22","_iterator22","submitRequest","formData","additionalParams","_getChunk","_step23","_iterator23","_file","_addFormElementData","doneCounter","_loop","_step24","_iterator24","inputName","inputType","_step25","_iterator25","_file3","_step26","_iterator26","_step27","_iterator27","_step28","_iterator28","ERROR","Emitter","random","initClass","$3ed269f2f0fb224b$var$camelize","forElement","discover","dropzones","checkElements","_step29","_iterator29","_step30","_iterator30","blockedBrowsers","capableBrowser","FileList","Blob","blacklistedBrowsers","_step31","_iterator31","dataURI","byteString","atob","mimeString","ab","ia","asc","rejectedItem","div","childNodes","els","_step32","_iterator32","_step33","_iterator33","question","rejected","_step34","mimeType","baseMimeType","_iterator34","validType","each","ACCEPTED","PROCESSING","sx","sy","sw","sh","dw","dh","vertSquashRatio","naturalWidth","ih","naturalHeight","drawImage","getImageData","ey","py","ratio","$3ed269f2f0fb224b$var$detectVerticalSquash","KEY_STR","output","chr1","chr2","chr3","enc1","enc2","enc3","enc4","origFileBase64","resizedFileBase64","rawImage","decode64","segments","slice2Segments","image","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","seg","imageData","buf","separatePoint","mae","ato","rawImageArray","endPoint","exec","dropZone","Dropzone","maxFileSize","hideFileInput","bindEvents","autoDiscover","inputTarget","createDirectUploadController","createDirectUpload","createHiddenInput","emitDropzoneError","emitDropzoneSuccess","referenceNode","bindProgressEvent","emitDropzoneUploading","submit","debounce","processFlowNameInput","setDefault","pfId","addBtnTarget","credentials","availableProviderId","connectedProviderId","toggle","fallbackProviderId","fallbackProviderItemId","updateApiOrder","providerCard","providerTarget","fallbackProviderCard","manual_providers_management_checkboxTarget","manual_providers_management","manual_selection_checkboxTarget","manual_order_checkboxTarget","updateUserPreference","updateDisplayedEmailProviders","dataset","rate","tool","selectBox","campaign","newOption","preview","selectedValue","previewData","taskID","taskItem","deliverableTarget","catchAllTarget","notFoundTarget","formatTarget","taskUuidTarget","removedCard","removedCardTarget","query","overlayTarget","hideModal","modalTarget","campaignID","campaignName","removed_campaign","Turbo","renderStreamMessage","variable","isFunction","isPlainObject","merge","obj1","obj2","register","AddProviderController","AdminController","AutoautosubmitController","DragController","DropzoneController","FilterTasksController","HelloController","ProcessFlowsController","ProvidersController","PushToToolsController","RemovalsController","RemoveProviderController","SnQueryFormController","TasksController","ModalController","InsightsController","DATE_PATTERN","toStr","toFloat","parseFloat","toDate","year","month","day","toArr","jsOptionsFunc","defaultOptions","hideLegend","setTitle","setMin","setMax","setStacked","setXtitle","setYtitle","chart","opts","chartOptions","series","singleSeriesFormat","legend","negativeValues","stacked","colors","xtitle","ytitle","library","sortByTime","sortByNumberSeries","sortByNumber","every","calculateTimeUnit","maxDay","getMilliseconds","getSeconds","getMinutes","getHours","getDate","dayOfWeek","getDay","getMonth","isDate","isNumber","byteSuffixes","formatValue","pre","suffix","precision","byteScale","positive","suffixIdx","baseValue","toPrecision","zeros","toFixed","thousands","decimal","seriesOption","baseOptions","maintainAspectRatio","tooltip","displayColors","font","color","interaction","defaultOptions$2","scales","ticks","maxTicksLimit","grid","drawOnChartArea","defaultColors","hideLegend$2","setTitle$2","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","setYtitle$2","addOpacity","opacity","notnull","calculateScale","maxAbsY","setFormatOptions$1","chartType","numericOptions","formatOptions","stepSize","label","dataPoint","parsed","valueLabel","xtype","jsOptions$2","prepareData","points","labels","prepareBubbleData","prepareNumberData","rows","i$1","i$2","key$1","row","j$1","prepareDefaultData","createDataTable","datasets","backgroundColor","fill","borderColor","borderWidth","pointChart","pointBackgroundColor","pointHoverBackgroundColor","pointHitRadius","pointHoverBorderWidth","stack","tension","pointRadius","pointHoverRadius","xmin","xmax","timeUnit","minTime","maxTime","timeDiff","displayFormats","hour","minute","unitStepSize","tooltipFormat","defaultExport$2","renderLineChart","drawChart","renderPieChart","donut","cutout","point","renderColumnChart","barOptions","indexAxis","maxLabelSize","getLabelForValue","setLabelSize","renderAreaChart","renderBarChart","renderScatterChart","showLine","renderBubbleChart","destroyed","defaultOptions$1","xAxis","fontSize","yAxis","credits","enabled","plotOptions","areaspline","area","marker","useUTC","hideLegend$1","verticalAlign","layout","align","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions","formatter","pointFormatter","pointFormat","defaultExport$1","curve","symbol","pie","innerSize","categories","newSeries","d$1","d2","renderTo","Chart","chartArea","fontName","pointSize","textStyle","alignment","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","vAxis","setBarMin","setBarMax","isStacked","italic","jsOptions","defaultExport","this$1$1","waitForLoaded","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","rows2","renderTimeline","lineHeight","clearChart","attachEvent","draw","pack","runCallbacks","loadOptions","packages","config","__config","language","mapsApiKey","charts","cb","LineChart","Timeline","GeoChart","columnType","sortedLabels","isDay","i$3","adapters","addAdapter","adapterType","product","getAdapterType","callAdapter","fnName","adapterName","adapter","Highcharts","google","__adapterObject","Chartkick","configure","setDefaultOptions","eachChart","chartId","destroyAll","use","formatSeriesData","keyType","formatSeriesBubble","keyFunc","detectXTypeWithFunction","processSeries","noDatetime","rawData","copy","copySeries","discrete","dataEmpty","detectXType","processSimple","perfectData","pendingRequests","runningRequests","runNext","setText","chartError","noPrefix","errorCatcher","__render","fetchDataSource","dataSource","showLoading","loading","renderChart","download","__downloadAttached","zIndex","border","__enterEvent","relatedTarget","toImage","__leaveEvent","addDownloadButton","elementId","startRefresh","getDataSource","getOptions","getChartObject","getAdapter","updateData","__updateOptions","setOptions","redraw","refreshData","sep","intervalId","stopRefresh","background","tmpCanvas","tmpCtx","fillStyle","fillRect","toBase64Image","updateRefresh","__processData","__chartName","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","autoDestroy","lim","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","h1","h2","eq","_hexString","g","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","p1","p2","hwb2rgb","hsv2rgb","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","ok","nk","unpacked","tkeys","unpack","transparent","RGB_RE","modHSL","proto","fromObject","functionParse","rgbParse","Color","_rgb","_valid","_hslString","weight","w2","c1","c2","w1","rgb1","rgb2","deg","_rotate","noop","uid","isNullOrUndef","isObject","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","endsWith","thisArg","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","klen","isValidKey","_merger","tval","sval","sources","current","merger","mergeIf","_mergerIf","keyResolvers","_getKeyResolver","_splitKey","resolveObjectKey","_capitalize","defined","setsEqual","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","niceNum","range","roundedRange","niceRange","fraction","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","_lookup","table","cmp","mid","_lookupByKey","ti","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","requestAnimFrame","requestAnimationFrame","throttled","argsToUse","ticking","_toLeftRightCenter","_alignStartEnd","_getStartAndCountOfVisiblePoints","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","_iScale$getUserBounds","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","ymin","ymax","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","isPatternOrGradient","getHoverColor","saturate","darken","hexString","numbers","intlCache","formatNumber","locale","Intl","NumberFormat","getNumberFormat","format","formatters","numeric","tickValue","notation","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","Ticks","overrides","getScope$1","_set","Defaults","_descriptors","_appliers","platform","getDevicePixelRatio","family","hover","hoverBackgroundColor","hoverBorderColor","hoverColor","intersect","includeInvisible","onHover","onClick","parsing","responsive","drawActiveElementsOnTop","describe","targetScope","_Object$definePropert","scopeObject","targetScopeObject","privateName","local","appliers","_scriptable","startsWith","_indexable","_fallback","loop","show","animations","visible","hide","autoPadding","padding","offset","beginAtZero","bounds","clip","grace","lineWidth","drawTicks","tickLength","tickWidth","_ctx","tickColor","dash","dashOffset","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","jlen","thing","nestedThing","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","stroke","_isPointInArea","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","setRenderOpts","translation","textAlign","textBaseline","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","decorationWidth","drawBackdrop","oldColor","renderText","lines","strokeWidth","strokeColor","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","objProps","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","cacheable","createContext","parentContext","_createResolver","scopes","_cache","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","deleteProperty","_keys","_cached","_resolveWithPrefixes","_scopes","getKeysFromAllScopes","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_subProxy","_stack","setContext","override","isScriptable","getValue","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","resolver","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","readKey","resolveFallback","getScope","addScopes","parentScopes","parentFallback","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","EPSILON","getPoint","skip","getValueAxis","monotoneAdjust","deltaK","mK","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointsLen","pointAfter","monotoneCompute","pointBefore","valueAxis","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","controlPoints","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","positions","getPositionedStyle","styles","pos","getRelativePosition","borderBox","boxSizing","paddings","borders","_getCanvasPosition","offsetX","offsetY","box","useOffsetPos","getCanvasPosition","round1","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rtl","rectX","_x","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_x2","_itemWidth","overrideTextDirection","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","prevValue","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","_objectSpread","desc","Animator","_request","_charts","_running","_lastDate","anims","date","numSteps","initial","currentStep","_update","_refresh","remaining","running","_active","_total","tick","_notify","_getAnims","_this$_getAnims$items","acc","cur","_duration","animator","interpolators","factor","c0","valid","mix","Animation","cfg","currentValue","_fn","_easing","_target","_prop","_from","_to","_promises","elapsed","res","rej","resolved","Animations","_properties","animationOptions","animatedProps","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","awaitAll","update","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","_applyStack","dsIndex","otherValue","singleMode","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","indexScale","valueScale","getStackKey","_index","_top","_bottom","_visualValues","getFirstScaleId","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","linkScales","_stacked","addElements","isPluginEnabled","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_dataCheck","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","getLabels","singleScale","_parsed$i","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","hidden","createStack","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","_clip","defaultClip","getMaxOverflow","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","createDataContext","createDatasetContext","_resolveElementOptions","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_args2","_dataChanges","_sync","newCount","computeMinSampleSize","curr","$bar","visibleMetas","getAllParsedValues","getAllScaleValues","updateMinAndPrev","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","_borderProps","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","_DatasetController","BarController","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","bars","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","_getSharedOptions","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","skipNull","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","_this$_cachedMeta","_this$options","minBarLength","actualBase","floating","applyStack","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","_value_","_DatasetController2","BubbleController","_this$_cachedMeta2","_this$_getSharedOptio2","_DatasetController3","DoughnutController","_super3","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","_this$_getRotationExt","_getRotationExtents","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_this$_getSharedOptio3","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","generateLabels","_chart$legend$options2","fontColor","legendItem","toggleDataVisibility","_DatasetController4","LineController","_super4","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","_this$_cachedMeta3","_this$_getSharedOptio4","_this$options2","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","_DatasetController5","PolarAreaController","_super5","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","_chart$legend$options3","angleLines","circular","pointLabels","PieController","_DoughnutController","_super6","_DatasetController6","RadarController","_super7","_fullLoop","pointPosition","getPointPositionForValue","_DatasetController7","ScatterController","_super8","_meta$data2","_getStartAndCountOfVi2","registry","_this$_cachedMeta4","_this$options3","_date","DateAdapterBase","members","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","getSortedVisibleDatasetMetas","_metasets$i","_index2","_binarySearch","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","_element$getProps","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","fullSize","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refit","refitBoxes","_updateDims","setBoxDims","placeBoxes","userPadding","_height","_width","_layers","z","layoutItem","minPadding","layoutBoxes","_box","_box$options","_box$options$stackWei","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","_BasePlatform","_super9","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","trigger","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","native","fromNativeEvent","addListener","_BasePlatform2","DomPlatform","_super10","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","_this$getProps","final","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","majorIndices","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","defaultRoutes","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","_Element","Scale","_super11","_margins","paddingTop","paddingBottom","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_this$getUserBounds","metas","getMinMax","xLabels","yLabels","_computeLabelItems","beforeUpdate","_this$options4","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_this$options5","titleOpts","gridOpts","titleHeight","_this$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_this$options6","_this$options6$ticks","isRotated","labelsBelowTicks","offsetRight","_this$options7","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getBaseValue","createTickContext","optionTicks","rot","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","_positionAxisID2","_value2","limit","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","_ret","_positionAxisID3","_value3","halfCount","tickTextAlign","labelPadding","_this$options8","_this$options9","_this$options9$ticks","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","_this$options10","lastLineWidth","_computeLabelArea","getLabelItems","renderTextOptions","_this$options11","_titleArgs","titleX","titleY","_positionAxisID","_value","titleArgs","drawBackground","drawGrid","drawBorder","drawTitle","drawLabels","tz","gz","bz","axisID","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","Registry","_typedRegistries","_each","_get","_len8","_len9","_key9","_len10","_key10","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","component","camelMethod","PluginService","_init","hook","_createDescriptors","_oldCache","_notifyStateChanges","localIds","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","_ref6","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","axisFromPosition","determineAxis","_len11","scaleOptions","_key11","_scaleOptions","getAxisFromDataset","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initOptions","initData","keyCache","keysCached","cachedKeys","generate","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","_getResolver","getResolver","subPrefixes","needContext","subResolver","_getResolver2","resolverCache","_descriptors2","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getChart","moveNumericKeys","intKey","getSizeForArea","field","userConfig","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","listen","_initialize","_this$options12","_resizeBeforeDraw","_resize","newSize","getMaximumSize","newRatio","onResize","render","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","hasUpdated","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","_defaults$datasets$ty","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","_ref8","datasetCount","makeSet","changeSet","noArea","_this17$_layers","_idx","_ilen","_updateDataset","_this$_resizeBeforeDr","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","setDatasetVisibility","_updateVisibility","_destroy","_stop","releaseContext","_this$canvas","bindUserEvents","bindResponsiveEvents","_add","detached","_remove","isAttached","activeElements","lastActive","pluginId","replay","hoverOptions","deactivated","activated","updateHoverStyle","inChartArea","_handleEvent","_this$_active","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","pixelMargin","innerR","spacingOffset","alpha","avNogSpacingRadius","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","_pCenter","innerMidAdjustedAngle","_pCenter2","p8","_pCenter3","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","inner","lineJoin","angleMargin","clipArc","_Element2","ArcElement","_super12","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","betweenAngles","withinRadius","_this$getProps3","_this$options13","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","_pathVars","lineMethod","stepped","getLineMethod","_ref10$move","fastPathSegment","prevX","lastY","_pathVars2","_ref11$move","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","_Element3","LineElement","_super13","_points","_segments","_pointsUpdated","_findStartAndEnd","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","_segments$i","interpolated","inRange$1","hitRadius","_Element4","PointElement","_super14","mouseX","mouseY","_this$getProps4","_this$getProps5","hoverRadius","getBarBounds","bar","half","_bar$getProps","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","_inRange","skipX","skipY","addNormalRectPath","inflateRect","amount","refRect","_Element5","BarElement","_super15","_this$options14","_boundingRects","addRectPath","_this$getProps6","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","getColorizer","colorizeDoughnutDataset","colorizePolarAreaDataset","colorizeDefaultDataset","containsColorsDefinitions","plugin_colors","forceOverride","_args","_chart$config","colorizer","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","_getStartAndCountOfVi3","getStartAndCountOfVisiblePointsSimplified","decimated","samples","maxAreaPoint","maxArea","nextA","bucketWidth","sampledIndex","endIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","_data$a","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","xMin","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_ref12$x","_ref12$y","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","_findPoint","findPoint","unshift","interpolate","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_source$scale","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","_ref14$above","above","_ref14$below","clipVertical","doFill","clipY","lineLoop","pathSegment","tpoints","tgt","subBounds","fillSource","_src$style","_src$style$background","notShape","clipBounds","interpolatedLineTo","targetLoop","_scale$chart$chartAre","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","_Element6","Legend","_super16","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_getBoxSize","_fitRows","_fitCols","hitboxes","totalHeight","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","_calculateItemSize","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","_this$options15","rtlHelper","hitbox","_hitbox","_draw","cursor","_this29","defaultColor","halfFontSize","_getBoxSize2","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","adjustHitBoxes","afterEvent","ci","_chart$legend$options","useBorderRadius","_Element7","Title","_super17","_this30","_padding","textSize","fontOpts","_this$_drawArgs","_drawArgs","plugin_title","titleBlock","createTitle","plugin_subtitle","positioners","average","xSet","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","_chart$chartArea","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","paddingAndSize","_toTRBLCorners","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","formattedValue","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","_Element8","Tooltip","_super18","_this31","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","_this32","bodyItems","scoped","_controller$getLabelA","_this33","getLabelAndValue","itemSort","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","_toTRBLCorners2","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","_drawColorBox","footerAlign","footerColor","tooltipSize","_toTRBLCorners3","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","_this34","positionChanged","_positionChanged","_ignoreReplayEvents","_this35","plugin_tooltip","afterInit","afterDraw","_willRender","Colors","Decimation","Filler","SubTitle","findOrAddLabel","addedLabels","addIfString","lastIndexOf","_getLabelForValue","_Scale","CategoryScale","_super19","_this36","_startValue","_valueRange","_addedLabels","added","_index3","_this$getUserBounds2","_this$getMinMax","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","rounded","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","decimalPlaces","relativeLabelSize","_Scale2","LinearScaleBase","_super20","_this37","_endValue","_this$getUserBounds3","minSign","maxSign","computeTickLimit","getTickLimit","_maxDigits","_LinearScaleBase","LinearScale","_super21","_this$getMinMax2","handleTickRangeOptions","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","minExp","exp","startExp","lastTick","_Scale3","LogarithmicScale","_super22","_this38","_zero","_this$getMinMax3","_this$getUserBounds4","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","_opts$pointLabels","itemOpts","createPointLabelItem","isNotOverlapped","buildPointLabelItems","hLimits","vLimits","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","_LinearScaleBase2","RadialLinearScale","_super23","_this39","_this$getMinMax4","_this40","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","_this$_pointLabelItem","_this$options16","_this41","drawPointLabels","gridLineOpts","drawRadiusLine","_this42","INTERVALS","millisecond","common","week","quarter","UNITS","sorter","_parse","_adapter","_scale$_parseOpts","_parseOpts","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","_Scale4","TimeScale","_super24","_this43","_unit","_majorUnit","_offsets","_normalized","formats","normalized","_this$getUserBounds5","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","datetime","_format","fmt","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","TimeSeriesScale","_TimeScale","_super25","_this44","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","argument","argStr","constructFrom","getDefaultOptions","formatDistanceLocale","lessThanXSeconds","one","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formatLong","full","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","argumentCallback","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findKey","valueCallback","predicate","parsePattern","any","enUS","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_baseDate","localize","weekStartsOn","firstWeekContainsDate","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","_message","subject","RangeError","transpose","fromDate","setFullYear","getFullYear","setHours","Setter","subPriority","_utcDate","ValueSetter","_Setter","validateValue","setValue","priority","flags","_Setter2","DateToSystemTimezoneSetter","timestampIsSet","Parser","dateString","setter","validate","EraParser","_Parser","incompatibleTokens","millisecondsInWeek","millisecondsInMinute","millisecondsInHour","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","hours","minutes","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","trunc","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","startOfWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","setDate","getWeekYear","_options$firstWeekCon","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","LocalWeekYearParser","startOfISOWeek","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","setMonth","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","startOfWeekYear","firstWeek","getWeek","setWeek","LocalWeekParser","getISOWeekYear","fourthOfJanuaryOfNextYear","fourthOfJanuaryOfThisYear","startOfISOWeekYear","fourthOfJanuary","getISOWeek","setISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","subpriority","addDays","setDay","currentDay","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","getISODay","setISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","setMinutes","SecondParser","setSeconds","FractionOfSecondParser","setMilliseconds","getTimezoneOffsetInMilliseconds","utcDate","UTC","setUTCFullYear","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","u","q","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","notWhitespaceRegExp","unescapedLatinCharacterRegExp","dateStr","formatStr","referenceDate","_options$locale2","_options$locale2$opti","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","subFnOptions","setters","firstCharacter","longFormatter","usedTokens","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","incompatibleToken","usedToken","fullToken","run","uniquePrioritySetters","setterArray","parseISO","_options$additionalDi","additionalDigits","dateStrings","timeString","patterns","dateTimeDelimiter","timeZoneDelimiter","timezone","splitDateString","parseYearResult","regex","captures","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","getUTCDay","setUTCDate","getUTCDate","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseDate","timeRegex","parseTimeUnit","validateTime","parseTime","dirtyDate","getUTCFullYear","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","timezoneString","timezoneRegex","_hours","validateTimezone","parseTimezone","isValid","startOfDay","differenceInCalendarDays","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","startOfYear","cleanDate","getDayOfYear","addLeadingZeros","padStart","lightFormatters","signedYear","numberOfDigits","milliseconds","dayPeriodEnum","signedWeekYear","weekYear","isoWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","delimiter","absOffset","originalDate","isToken","preprocessor","formatterOptions","part","matched","addMilliseconds","addSeconds","addMinutes","addHours","addWeeks","addMonths","dayOfMonth","endOfDesiredMonth","addQuarters","addYears","differenceInMilliseconds","getRoundingMethod","differenceInSeconds","roundingMethod","differenceInMinutes","differenceInHours","differenceInDays","_dateLeft","_dateRight","compareLocalAsc","difference","differenceInWeeks","compareAsc","differenceInCalendarMonths","endOfDay","endOfMonth","isLastDayOfMonth","differenceInMonths","isLastMonthNotFull","differenceInQuarters","differenceInCalendarYears","differenceInYears","startOfSecond","startOfMinute","startOfHour","startOfMonth","startOfQuarter","currentMonth","endOfSecond","endOfMinute","endOfHour","endOfWeek","endOfQuarter","endOfYear","FORMATS","_id","_templateObject","_templateObject2","_taggedTemplateLiteral","strings","_classPrivateFieldLooseBase","privateKey","_classPrivateFieldLooseKey","_superPropBase","_asyncToGenerator","_wrapNativeSuper","Class","Wrapper","_construct","Parent","raise","errorConstructor","submitter","HTMLElement","DOMException","validateSubmitter","HTMLFormElement","submittersByForm","clickCaptured","candidate","prototypeOfSubmitEvent","SubmitEvent","vendor","FrameLoadingStyle","eager","lazy","FrameElement","_HTMLElement","delegateConstructor","sourceURLReloaded","loadingStyleChanged","completeChanged","sourceURLChanged","disabledChanged","frameLoadingStyleFromString","isLoading","isPreview","_this$ownerDocument","_this$ownerDocument$d","expandURL","locatable","baseURI","getAnchor","anchorMatch","getAction$1","getExtension","pathname","getPathComponents","getLastPathComponent","isPrefixedBy","baseURL","origin","getPrefix","locationIsVisitable","rootLocation","getRequestURL","anchor","toCacheKey","FetchResponse","succeeded","statusCode","redirected","contentType","header","isHTML","activateScriptElement","createdScriptElement","getMetaContent","destinationElement","sourceElement","copyElementAttributes","composed","nextRepaint","visibilityState","nextEventLoopTick","nextAnimationFrame","parseHTMLDocument","unindent","indent","markAsBusy","_elements","localName","clearBusyState","_elements2","waitForLoad","timeoutInMilliseconds","once","getHistoryMethodForAction","history","replaceState","pushState","isAction","getVisitAction","getMetaElement","findClosestRecursively","_element$getRootNode","assignedSlot","getRootNode","elementIsFocusable","queryAutofocusableElement","elementOrDocumentFragment","around","_around","_callee45","_context45","recentRequests","_Set","LimitedSet","oldestValue","nativeFetch","fetchWithTurboHeaders","modifiedHeaders","Headers","requestUID","fetchMethodFromString","FetchMethod","post","patch","fetchEnctypeFromString","encoding","FetchEnctype","multipart","plain","urlEncoded","_resolveRequestPromise","_allowRequestToBeIntercepted","_willDelegateErrorHandling","FetchRequest","_this$delegate$referr","requestBody","URLSearchParams","_willDelegateErrorHandling2","_allowRequestToBeIntercepted2","abortController","AbortController","_buildResourceAndBody","buildResourceAndBody","_buildResourceAndBody2","fetchOptions","redirect","signal","abortSignal","referrer","_receive","_perform","fetchBody","isSafe","searchParams","fetchMethod","search","_buildResourceAndBody4","prepareRequest","requestStarted","receive","t0","requestErrored","requestFinished","_callee2","fetchResponse","_context2","requestPreventedHandlingResponse","requestSucceededWithResponse","requestFailedWithResponse","_x3","_x38","_allowRequestToBeIntercepted3","_callee49","requestInterception","_this53","_context49","resume","resource","entriesExcludingFiles","mergeIntoURLSearchParams","AppearanceObserver","lastEntry","isIntersecting","elementAppearedInViewport","intersectionObserver","IntersectionObserver","unobserve","StreamMessage","fragment","streamElement","importNode","templateElement","inertScriptElement","replaceWith","importStreamElements","template","FormSubmissionState","FormSubmission","formElement","mustRedirect","getMethod","getAction","getFormAction","buildFormData","getEnctype","fetchRequest","_callee3","requesting","confirmationMessage","_context3","confirmMethod","perform","stopping","stopped","cookieName","cookie","decodeURIComponent","getCookieValue","requestAcceptsTurboStreamResponse","acceptResponseType","_this$submitter","setSubmitsWith","formSubmission","formSubmissionStarted","clientError","serverError","formSubmissionFailedWithResponse","requestMustRedirect","responseSucceededWithoutRedirect","formSubmissionErrored","formSubmissionSucceededWithResponse","_this$submitter2","resetSubmitterText","formSubmissionFinished","submitsWith","originalSubmitText","_this$submitter3","_submitter","formElementAction","formAction","Snapshot","activeElement","getElementForAnchor","queryPermanentElementsAll","_getPermanentElementById","snapshot","permanentElementMap","permanentElements","currentPermanentElement","newPermanentElement","getPermanentElementById","FormSubmitObserver","submitCaptured","submitBubbled","submissionDoesNotDismissDialog","getElementsByName","HTMLIFrameElement","submissionDoesNotTargetIFrame","willSubmitForm","formSubmitted","_resolveRenderPromise","_resolveInterceptionPromise","View","_renderSnapshot","_prepareToRenderSnapshot","_render","scrollToElement","focusElement","scrollToPosition","scrollToAnchor","scrollIntoView","scrollRoot","scrollTo","_callee4","renderer","shouldRender","renderInterception","_context4","newSnapshot","renderPromise","prepareToRenderSnapshot","renderElement","allowsImmediateRender","renderSnapshot","viewRenderedSnapshot","renderMethod","preloadOnLoadLinksForView","finishRenderingSnapshot","reloadReason","_x4","reason","viewInvalidated","_callee5","_context5","markAsPreview","prepareToRender","_x5","_callee6","_context6","_x6","finishRendering","FrameView","_View","LinkInterceptor","clickBubbled","respondsToEventTarget","clickEvent","linkClicked","shouldInterceptLinkClick","linkClickIntercepted","willVisit","_event","LinkClickObserver","clickEventIsSignificant","findLinkFromClickTarget","doesNotTargetIFrame","_location2","getLocationForLink","willFollowLinkToLocation","followedLinkToLocation","which","FormLinkClickObserver","linkInterceptor","willSubmitFormLinkToLocation","turboFrame","turboAction","turboConfirm","submittedFormLinkToLocation","Bardo","_preservingPermanentElements","_id2","_this$permanentElemen","enteringBardo","replaceNewPermanentElementWithPlaceholder","_id3","replaceCurrentPermanentElementWithClone","replacePlaceholderWithPermanentElement","leavingBardo","permanentElement","placeholder","createPlaceholderForPermanentElement","getPlaceholderById","placeholders","_callee7","bardo","_context7","leave","_x7","_x8","_x9","_activeElement","Renderer","currentSnapshot","willRender","resolvingFunctions","_preservingPermanentElements2","_callee8","_context8","preservingPermanentElements","_x10","connectedSnapshot","firstAutofocusableElement","getPermanentElementMapForSnapshot","_Renderer","FrameRenderer","_render2","_callee9","_context9","loadFrameElement","scrollFrameIntoView","focusFirstAutofocusableElement","activateScriptElements","willRenderFrame","currentElement","newElement","autoscroll","firstElementChild","block","behavior","readScrollBehavior","newScriptElements","activatedScriptElement","_frameElement$ownerDo","destinationRange","createRange","selectNodeContents","deleteContents","frameElement","sourceRange","extractContents","ProgressBar","hiding","trickle","stylesheetElement","createStylesheetElement","progressElement","createProgressElement","installStylesheetElement","installProgressElement","startTrickling","fadeProgressElement","uninstallProgressElement","stopTrickling","animationDuration","trickleInterval","defaultCSS","HeadSnapshot","_Snapshot","detailsByOuterHTML","elementIsNoscript","elementWithoutNonce","outerHTML","tracked","elementIsTracked","getElementsMatchingTypeNotInSnapshot","matchedType","_this17$detailsByOute","findMetaElementByName","elementIsMetaElementWithName","elementIsScript","elementIsStylesheet","PageSnapshot","_Snapshot2","headSnapshot","clonedElement","selectElements","clonedSelectElements","selectedOptions","_option","_this$getSetting","getSetting","cacheControlValue","fromDocument","_viewTransitionStarted","_lastOperation","ViewTransitioner","useViewTransition","viewTransitionsAvailable","_callee10","_context10","startViewTransition","finished","historyChanged","visitCachedSnapshot","updateHistory","shouldCacheSnapshot","acceptsStreamResponse","TimingMetric","VisitState","SystemStatusCode","Direction","advance","Visit","restorationIdentifier","timingMetrics","followedRedirect","scrolled","snapshotCached","viewTransitioner","_defaultOptions$optio","snapshotHTML","isSamePage","locationWithActionIsSamePage","_renderPageSnapshot","_render3","_requestFailedWithResponse","_requestSucceededWithResponse","view","getRestorationDataForIdentifier","recordTimingMetric","visitStarted","cancelRender","followRedirect","visitCompleted","visitFailed","_this$referrer","hasPreloadedResponse","simulateRequest","shouldIssueRequest","startRequest","recordResponse","finishRequest","visitRequestStarted","isSuccessful","visitRequestCompleted","visitRequestFailedWithStatusCode","visitRequestFinished","_this$response","responseHTML","_callee11","_context11","cacheSnapshot","fromHTMLString","renderPageSnapshot","visitRendered","renderError","fail","getCachedSnapshotForLocation","getPreloadedSnapshot","hasAnchor","isPreviewable","getCachedSnapshot","_callee12","_context12","_this$response2","redirectedToLocation","visitProposedToLocation","_callee13","_context13","performScroll","changeHistory","_response","_callee14","_context14","_x11","_x12","_callee15","_context15","_x13","_x14","_error","forceReloaded","shouldPreserveScrollPosition","scrollToRestoredPosition","scrollToTop","visitScrolledToSamePageLocation","lastRenderedLocation","scrollPosition","restorationData","metric","hasCachedSnapshot","_callee16","_context16","frame","_x15","_callee18","_context18","renderChange","shouldTransitionTo","_callee17","_context17","renderPage","_x16","_x17","cancelAnimationFrame","BrowserAdapter","session","progressBar","showProgressBar","startVisit","visit","loadCachedSnapshot","issueRequest","goToSamePageAnchor","showVisitProgressBarAfterDelay","loadResponse","reload","_visit","hideVisitProgressBar","_formSubmission","showFormProgressBarAfterDelay","hideFormProgressBar","visitProgressBarTimeout","progressBarDelay","formProgressBarTimeout","_this$location","CacheObserver","deprecatedSelector","removeTemporaryElements","temporaryElements","temporaryElementsWithDeprecation","_shouldSubmit","_shouldRedirect","_findFrameElement","FrameRedirector","_findFrameElement2","_shouldRedirect2","_shouldSubmit2","formSubmitObserver","_location","_meta$content2","submissionIsNavigatable","elementIsNavigatable","History","pageLoaded","currentIndex","onPopState","shouldHandlePopState","turbo","restorationIndex","historyPoppedToLocationWithRestorationIdentifierAndDirection","onPageLoad","_callee19","_context19","_x18","_history$state","_history$state$turbo","additionalData","_history$scrollRestor","previousScrollRestoration","scrollRestoration","pageIsLoaded","_getActionForFormSubmission","_getDefaultAction","Navigator","_getDefaultAction2","_getActionForFormSubmission2","_formSubmissionFailedWithResponse","_formSubmissionSucceededWithResponse","allowsVisitingLocationWithAction","currentVisit","_callee20","visitOptions","_context20","clearSnapshotCache","proposeVisit","_x19","_x20","_callee21","_context21","_x21","_x22","currentAnchor","isRestorationToTop","oldURL","newURL","_this$location2","PageStage","PageObserver","stage","interpretReadyState","pageIsInteractive","pageIsComplete","pageWillUnload","pageBecameInteractive","ScrollObserver","onScroll","updatePosition","pageXOffset","pageYOffset","scrollPositionChanged","StreamMessageRenderer","permanentElementsInDocument","permanentElementInDocument","_id4","elementInStream","getPermanentElementMapForFragment","_x23","_x24","_withAutofocusFromFragment","withAutofocusFromFragment","_x25","_withPreservedFocus","withPreservedFocus","_callee46","generatedID","turboStreams","elementWithAutofocus","willAutofocusId","elementToAutofocus","_context46","firstAutofocusableElementInStreams","_callee47","_yield$around","_yield$around2","activeElementBeforeRender","activeElementAfterRender","restoreFocusTo","elementToFocus","_context47","nodeListOfStreamElements","_started","StreamObserver","inspectFetchResponse","_event$detail","fetchResponseFromEvent","_response$contentType","fetchResponseIsStream","receiveMessageResponse","receiveMessageEvent","receiveMessageHTML","_receiveMessageResponse","streamSourceIsConnected","_callee22","_context22","_x26","receivedMessageFromStream","_Renderer2","ErrorRenderer","_render4","_callee23","_context23","replaceHeadAndBody","_document","replaceChild","newHead","scriptElements","replaceableElement","_document2","EMPTY_SET","morphNormalizedContent","oldNode","normalizedNewContent","oldHead","handleHeadElement","morphStyle","morphChildren","bestMatch","newContent","bestElement","score","newScore","scoreElement","findBestNodeMatch","previousSibling","morphedNode","morphOldNodeTo","insertSiblings","ignoreActive","beforeNodeRemoved","afterNodeRemoved","isSoftMatch","beforeNodeMorphed","HTMLHeadElement","fromAttributes","toAttributes","fromAttribute","toAttribute","nodeValue","HTMLInputElement","syncAttribute","HTMLOptionElement","HTMLTextAreaElement","fromValue","syncNodeFrom","afterNodeMorphed","beforeNodeAdded","afterNodeAdded","newParent","oldParent","newChild","nextNewChild","insertionPoint","isIdSetMatch","removeIdsFromConsideration","idSetMatch","findIdSetMatch","removeNodesBetween","softMatch","findSoftMatch","tempNode","removeNode","newHeadTag","currentHead","preserved","nodesToAppend","headMergeStyle","srcToNewHeadNodes","newHeadChild","currentHeadElt","inNewContent","isReAppended","shouldReAppend","isPreserved","shouldPreserve","shouldRemove","_nodesToAppend","newNode","newElt","createContextualFragment","_removed","removedElement","afterHeadMorphed","kept","noOp","createMorphContext","idMap","createIdMap","deadIds","elt","node1","node2","getIdIntersectionCount","startInclusive","endExclusive","newChildPotentialIdCount","_potentialMatch","otherMatchCount","potentialSoftMatch","siblingSoftMatchCount","parseContent","contentWithSvgsRemoved","generatedByIdiomorph","htmlElement","_content","normalizeContent","_dummyParent","_dummyParent2","_arr2","isIdInConsideration","idIsWithinNode","targetNode","_id5","matchCount","_id6","populateIdMapForNode","nodeParent","idSet","oldContent","idiomorph","morph","Document","normalizedContent","_morphBody","_morphElements","_shouldAddElement","_shouldMorphElement","_shouldRemoveElement","_reloadRemoteFrames","_renderFrameWithMorph","_morphFrameUpdate","_isFrameReloadedWithMorph","_remoteFrames","_Renderer3","MorphRenderer","_render5","_remoteFrames2","_isFrameReloadedWithMorph2","_renderFrameWithMorph2","_reloadRemoteFrames2","_morphElements2","_morphBody2","isMorphingTurboFrame","_callee24","_context24","_morphBody3","_callee50","_context50","_this50","_this51","_setLanguage","_Renderer4","PageRenderer","_assignNewBody","_mergeProvisionalElements","_copyNewHeadStylesheetElements","_replaceBody","_mergeHead","_render6","_prepareToRender","_setLanguage2","isVisitable","trackedElementsAreIdentical","_callee25","_context25","mergeHead","_callee26","_context26","replaceBody","_callee27","mergedHeadElements","newStylesheetElements","_context27","mergeProvisionalElements","copyNewHeadStylesheetElements","copyNewHeadScriptElements","_callee29","_context29","_callee28","_context28","activateNewBody","assignNewBody","currentHeadSnapshot","trackedElementSignature","newHeadSnapshot","_callee30","loadingElements","_context30","newHeadStylesheetElements","newHeadScriptElements","_callee31","newHeadElements","_element3","_context31","newHeadProvisionalElements","currentHeadProvisionalElements","isCurrentElementInElementList","elementList","isEqualNode","adoptNode","activateNewBodyScriptElements","newBodyScriptElements","_callee32","_context32","getStylesheetElementsNotInSnapshot","getScriptElementsNotInSnapshot","provisionalElements","HTMLBodyElement","lang","SnapshotCache","snapshots","_step35","_iterator35","_View2","PageView","_cacheSnapshot","snapshotCache","prefersViewTransitions","shouldMorphPage","isPageRefresh","rendererClass","_callee33","_location3","cachedSnapshot","_args33","_context33","isCacheable","viewWillCacheSnapshot","fromElement","_preloadAll","Preloader","_requestSucceededWithResponse2","_preloadURL","_step36","_iterator36","shouldPreloadLink","preloadURL","_callee34","_context34","_x27","_callee35","_context35","_x28","_x29","_setCacheControl","Cache","_setCacheControl2","Session","pageObserver","cacheObserver","linkClickObserver","scrollObserver","streamObserver","formLinkClickObserver","frameRedirector","streamMessageRenderer","drive","formMode","preloader","requestId","exemptPageFromPreview","connectStreamSource","disconnectStreamSource","isUnsafe","isStream","frameTarget","_location4","pageInvalidated","updateRestorationData","applicationAllowsFollowingLinkToLocation","getActionForLink","applicationAllowsVisitingLocation","extendURLWithDeprecatedProperties","markVisitDirection","silent","notifyApplicationAfterVisitingLocation","unmarkVisitDirection","notifyApplicationAfterPageLoad","getTimingMetrics","notifyApplicationAfterVisitingSamePageLocation","assumeControlOfScrollRestoration","relinquishControlOfScrollRestoration","_this$navigator$curre","notifyApplicationBeforeCachingSnapshot","notifyApplicationBeforeRender","_snapshot","notifyApplicationAfterRender","notifyApplicationAfterFrameLoad","notifyApplicationAfterFrameRender","ev","notifyApplicationAfterClickingLinkToLocation","notifyApplicationBeforeVisitingLocation","newBody","timing","HashChangeEvent","submitterIsNavigatable","withinFrame","deprecatedLocationPropertyDescriptors","absoluteURL","navigator$1","registerAdapter","setProgressBarDelay","setConfirmMethod","setFormMode","TurboFrameMissingError","_Error","_currentFetchRequest","_resolveVisitPromise","_connected","_hasBeenLoaded","_ignoredAttributes","_loadSourceURL","_loadFrameResponse","_visit2","_navigateFrame","_handleUnvisitableFrameResponse","_willHandleFrameMissingFromResponse","_handleFrameMissingFromResponse","_throwFrameMissingError","_visitResponse","_findFrameElement3","_formActionIsVisitable","_shouldInterceptNavigation","_isIgnoringChangesTo","_ignoringChangesToAttribute","_withCurrentNavigationElement","FrameController","_element4","_withCurrentNavigationElement2","_ignoringChangesToAttribute2","_isIgnoringChangesTo2","_shouldInterceptNavigation2","_formActionIsVisitable2","_findFrameElement4","_visitResponse2","_throwFrameMissingError2","_handleFrameMissingFromResponse2","_willHandleFrameMissingFromResponse2","_handleUnvisitableFrameResponse2","_navigateFrame2","_visit3","_loadFrameResponse2","_loadSourceURL2","fetchResponseLoaded","_fetchResponse","previousFrameElement","replaceChildren","appearanceObserver","_extractForeignFrameElement","_requestFailedWithResponse2","_requestSucceededWithResponse3","_loadResponse","loadingStyle","_callee36","_document3","_context36","sourceURL","_x30","proposeVisitIfNavigatedWithAction","_this$currentNavigati","currentNavigationElement","_callee37","_context37","_x31","_x32","_callee38","_context38","_x33","_x34","_ref31","_ref32","_ref33","_isPreview","newFrame","_renderMethod","_newElement","pageSnapshot","_ref34","_callee39","_context39","_x35","_callee40","_context40","CSS","escape","activateElement","extractForeignFrameElement","_x36","isActive","_meta$content","_loadSourceURL3","_callee51","_context51","_x39","_x40","_loadFrameResponse3","_callee52","newFrameElement","_context52","frameRendered","frameLoaded","_x41","_visit4","_callee53","_classPrivateFieldLoo","_this54","_context53","_x42","_handleUnvisitableFrameResponse3","_callee54","_context54","_this52","_ref36","_callee48","_context48","Response","_x43","_x44","missing","_x45","_visitResponse3","_callee55","wrapped","_context55","_getFrameElementById","getFrameElementById","currentURL","connectedCallback","disconnectedCallback","StreamActions","targetElements","_e$parentElement","templateContent","removeDuplicateTargetChildren","_e$parentElement2","prepend","_this45","_this46","targetElement","_raise","_HTMLElement2","StreamElement","_renderElement","_render7","_connectedCallback","_this47","_raise2","_callee41","_context41","_callee43","_this$renderPromise","_this48","_context43","_callee42","_context42","beforeRenderEvent","_unused","duplicateChildren","_this$templateContent","existingChildren","flatMap","newChildrenIds","actionFunction","targetElementsById","targetElementsByQuery","HTMLTemplateElement","_2","_this$outerHTML$match","newStream","_this$ownerDocument2","_this$ownerDocument3","_callee44","_context44","performAction","_x37","description","consumer","StreamSourceElement","_HTMLElement3","_this49","_len12","_key12","streamSource","WebSocket","EventSource","close","getConsumer","_getConsumer","setConsumer","newConsumer","_createConsumer","_yield$import","createConsumer","subscribeTo","_subscribeTo","channel","mixin","_yield$getConsumer","subscriptions","walk","customElements","currentScript","TurboCableStreamSourceElement","received","dispatchMessageEvent","connected","subscriptionConnected","disconnected","subscriptionDisconnected","subscription","unsubscribe","MessageEvent","signed_stream_name","isBodyInit","formMethod","HTMLButtonElement","determineFormMethod","overrideMethod","determineFetchMethod"],"mappings":"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","file":"js/application-a9b4dd098c563ddcfb35.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"1\":\"vendors~actioncable\"}[chunkId]||chunkId) + \"-\" + {\"1\":\"76ff1f1826a535cd7dda\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","module.exports = require(\"regenerator-runtime\");\n","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/master/actionview/app/assets/javascripts\nReleased under the MIT license\n */\n;\n(function () {\n var context = this;\n (function () {\n (function () {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form',\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n }).call(this);\n }).call(context);\n var Rails = context.Rails;\n (function () {\n (function () {\n var nonce;\n nonce = null;\n\n Rails.loadCSPNonce = function () {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function () {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n }).call(this);\n (function () {\n var expando, m;\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function (element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function (element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function (element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n\n return element[expando][key] = value;\n };\n\n Rails.$ = function (selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n }).call(this);\n (function () {\n var $, csrfParam, csrfToken;\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function () {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function (xhr) {\n var token;\n token = csrfToken();\n\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function () {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n\n if (token != null && param != null) {\n return $('form input[name=\"' + param + '\"]').forEach(function (input) {\n return input.value = token;\n });\n }\n };\n }).call(this);\n (function () {\n var CustomEvent, fire, matches, preventDefault;\n matches = Rails.matches;\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function CustomEvent(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n\n CustomEvent.prototype.preventDefault = function () {\n var result;\n result = preventDefault.call(this);\n\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function get() {\n return true;\n }\n });\n }\n\n return result;\n };\n }\n\n fire = Rails.fire = function (obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function (e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function (element, selector, eventType, handler) {\n return element.addEventListener(eventType, function (e) {\n var target;\n target = e.target;\n\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n }).call(this);\n (function () {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function (options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function () {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n\n if (options.beforeSend != null && !options.beforeSend(xhr, options)) {\n return false;\n }\n\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function prepareOptions(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n\n options.accept = AcceptHeaders[options.dataType];\n\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n\n return options;\n };\n\n createXHR = function createXHR(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n\n xhr.withCredentials = !!options.withCredentials;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n\n return xhr;\n };\n\n processResponse = function processResponse(response, type) {\n var parser, script;\n\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n\n return response;\n };\n\n Rails.href = function (element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function (url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n return !((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host || originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host);\n } catch (error) {\n e = error;\n return true;\n }\n };\n }).call(this);\n (function () {\n var matches, toArray;\n matches = Rails.matches;\n\n toArray = function toArray(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function (element, additionalParam) {\n var inputs, params;\n inputs = [element];\n\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n\n params = [];\n inputs.forEach(function (input) {\n if (!input.name || input.disabled) {\n return;\n }\n\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function (option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n\n if (additionalParam) {\n params.push(additionalParam);\n }\n\n return params.map(function (param) {\n if (param.name != null) {\n return encodeURIComponent(param.name) + \"=\" + encodeURIComponent(param.value);\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function (form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function (el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n }).call(this);\n (function () {\n var allowAction, fire, stopEverything;\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function (e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function (message, element) {\n return confirm(message);\n };\n\n allowAction = function allowAction(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n\n if (!message) {\n return true;\n }\n\n answer = false;\n\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n\n callback = fire(element, 'confirm:complete', [answer]);\n }\n\n return answer && callback;\n };\n }).call(this);\n (function () {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n Rails.handleDisabledElement = function (e) {\n var element;\n element = this;\n\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function (e) {\n var element;\n\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n\n element = e.target;\n } else {\n element = e;\n }\n\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function (e) {\n var element;\n element = e instanceof Event ? e.target : e;\n\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function disableLinkElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function enableLinkElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function disableFormElements(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function disableFormElement(element) {\n var replacement;\n\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n\n replacement = element.getAttribute('data-disable-with');\n\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function enableFormElements(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function enableFormElement(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n\n setData(element, 'ujs:enable-with', null);\n }\n\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function isXhrRedirect(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n }).call(this);\n (function () {\n var stopEverything;\n stopEverything = Rails.stopEverything;\n\n Rails.handleMethod = function (e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n\n if (!method) {\n return;\n }\n\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n\n if (csrfParam != null && csrfToken != null && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n }).call(this);\n (function () {\n var ajax,\n fire,\n getData,\n isCrossDomain,\n isRemote,\n matches,\n serializeElement,\n setData,\n stopEverything,\n slice = [].slice;\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n isRemote = function isRemote(element) {\n var value;\n value = element.getAttribute('data-remote');\n return value != null && value !== 'false';\n };\n\n Rails.handleRemote = function (e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n\n if (!isRemote(element)) {\n return true;\n }\n\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function beforeSend(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function success() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function error() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function complete() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: withCredentials != null && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function (e) {\n var button, form;\n button = this;\n form = button.form;\n\n if (!form) {\n return;\n }\n\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function (e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = e.button != null && e.button !== 0;\n\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n }).call(this);\n (function () {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if (typeof jQuery !== \"undefined\" && jQuery !== null && jQuery.ajax != null) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function () {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n\n window.addEventListener('pageshow', function () {\n $(Rails.formEnableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function (el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function (e) {\n return setTimeout(function () {\n return disableElement(e);\n }, 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n }).call(this);\n }).call(this);\n\n if ((typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);","/**\n * Module dependencies.\n */\nvar now = require('date-now');\n/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing.\n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\n\n\nmodule.exports = function debounce(func, wait, immediate) {\n var timeout, args, context, timestamp, result;\n if (null == wait) wait = 100;\n\n function later() {\n var last = now() - timestamp;\n\n if (last < wait && last > 0) {\n timeout = setTimeout(later, wait - last);\n } else {\n timeout = null;\n\n if (!immediate) {\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n }\n }\n }\n\n ;\n return function debounced() {\n context = this;\n args = arguments;\n timestamp = now();\n var callNow = immediate && !timeout;\n if (!timeout) timeout = setTimeout(later, wait);\n\n if (callNow) {\n result = func.apply(context, args);\n context = args = null;\n }\n\n return result;\n };\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([\"exports\"], factory) : factory(global.ActiveStorage = {});\n})(this, function (exports) {\n \"use strict\";\n\n function createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n }\n\n var sparkMd5 = createCommonjsModule(function (module, exports) {\n (function (factory) {\n {\n module.exports = factory();\n }\n })(function (undefined) {\n var hex_chr = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i;\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(state, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n\n function rhex(n) {\n var s = \"\",\n j;\n\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n\n return s;\n }\n\n function hex(x) {\n var i;\n\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n\n return x.join(\"\");\n }\n\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = val | 0 || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n function SparkMD5() {\n this.reset();\n }\n\n SparkMD5.prototype.append = function (str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.prototype.reset = function () {\n this._buff = \"\";\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash\n };\n };\n\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n\n if (i > 55) {\n md5cycle(this._hash, tail);\n\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n SparkMD5.hash = function (str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n SparkMD5.ArrayBuffer = function () {\n this.reset();\n };\n\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n\n this._finish(tail, length);\n\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n return ret;\n };\n\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n return this;\n };\n\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n });\n });\n\n var classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n };\n\n var createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\n var FileChecksum = function () {\n createClass(FileChecksum, null, [{\n key: \"create\",\n value: function create(file, callback) {\n var instance = new FileChecksum(file);\n instance.create(callback);\n }\n }]);\n\n function FileChecksum(file) {\n classCallCheck(this, FileChecksum);\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n\n createClass(FileChecksum, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n this.callback = callback;\n this.md5Buffer = new sparkMd5.ArrayBuffer();\n this.fileReader = new FileReader();\n this.fileReader.addEventListener(\"load\", function (event) {\n return _this.fileReaderDidLoad(event);\n });\n this.fileReader.addEventListener(\"error\", function (event) {\n return _this.fileReaderDidError(event);\n });\n this.readNextChunk();\n }\n }, {\n key: \"fileReaderDidLoad\",\n value: function fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n\n if (!this.readNextChunk()) {\n var binaryDigest = this.md5Buffer.end(true);\n var base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n }, {\n key: \"fileReaderDidError\",\n value: function fileReaderDidError(event) {\n this.callback(\"Error reading \" + this.file.name);\n }\n }, {\n key: \"readNextChunk\",\n value: function readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n var start = this.chunkIndex * this.chunkSize;\n var end = Math.min(start + this.chunkSize, this.file.size);\n var bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }]);\n return FileChecksum;\n }();\n\n function getMetaValue(name) {\n var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n var elements = root.querySelectorAll(selector);\n return toArray$1(elements);\n }\n\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n\n return root.querySelector(selector);\n }\n\n function dispatchEvent(element, type) {\n var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var disabled = element.disabled;\n var bubbles = eventInit.bubbles,\n cancelable = eventInit.cancelable,\n detail = eventInit.detail;\n var event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n\n return event;\n }\n\n function toArray$1(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n\n var BlobRecord = function () {\n function BlobRecord(file, checksum, url) {\n var _this = this;\n\n classCallCheck(this, BlobRecord);\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n var csrfToken = getMetaValue(\"csrf-token\");\n\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobRecord, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n var response = this.response;\n var direct_upload = response.direct_upload;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n var result = {};\n\n for (var key in this.attributes) {\n result[key] = this.attributes[key];\n }\n\n return result;\n }\n }, {\n key: \"status\",\n get: function get$$1() {\n return this.xhr.status;\n }\n }, {\n key: \"response\",\n get: function get$$1() {\n var _xhr = this.xhr,\n responseType = _xhr.responseType,\n response = _xhr.response;\n\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n }]);\n return BlobRecord;\n }();\n\n var BlobUpload = function () {\n function BlobUpload(blob) {\n var _this = this;\n\n classCallCheck(this, BlobUpload);\n this.blob = blob;\n this.file = blob.file;\n var _blob$directUploadDat = blob.directUploadData,\n url = _blob$directUploadDat.url,\n headers = _blob$directUploadDat.headers;\n this.xhr = new XMLHttpRequest();\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n\n for (var key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n\n this.xhr.addEventListener(\"load\", function (event) {\n return _this.requestDidLoad(event);\n });\n this.xhr.addEventListener(\"error\", function (event) {\n return _this.requestDidError(event);\n });\n }\n\n createClass(BlobUpload, [{\n key: \"create\",\n value: function create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n }, {\n key: \"requestDidLoad\",\n value: function requestDidLoad(event) {\n var _xhr = this.xhr,\n status = _xhr.status,\n response = _xhr.response;\n\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n }, {\n key: \"requestDidError\",\n value: function requestDidError(event) {\n this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n }\n }]);\n return BlobUpload;\n }();\n\n var id = 0;\n\n var DirectUpload = function () {\n function DirectUpload(file, url, delegate) {\n classCallCheck(this, DirectUpload);\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n\n createClass(DirectUpload, [{\n key: \"create\",\n value: function create(callback) {\n var _this = this;\n\n FileChecksum.create(this.file, function (error, checksum) {\n if (error) {\n callback(error);\n return;\n }\n\n var blob = new BlobRecord(_this.file, checksum, _this.url);\n notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create(function (error) {\n if (error) {\n callback(error);\n } else {\n var upload = new BlobUpload(blob);\n notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create(function (error) {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n });\n }\n });\n });\n }\n }]);\n return DirectUpload;\n }();\n\n function notify(object, methodName) {\n if (object && typeof object[methodName] == \"function\") {\n for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n messages[_key - 2] = arguments[_key];\n }\n\n return object[methodName].apply(object, messages);\n }\n }\n\n var DirectUploadController = function () {\n function DirectUploadController(input, file) {\n classCallCheck(this, DirectUploadController);\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n\n createClass(DirectUploadController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(function (error, attributes) {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n\n _this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n\n _this.dispatch(\"end\");\n\n callback(error);\n });\n }\n }, {\n key: \"uploadRequestDidProgress\",\n value: function uploadRequestDidProgress(event) {\n var progress = event.loaded / event.total * 100;\n\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, \"direct-upload:\" + name, {\n detail: detail\n });\n }\n }, {\n key: \"dispatchError\",\n value: function dispatchError(error) {\n var event = this.dispatch(\"error\", {\n error: error\n });\n\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n }, {\n key: \"directUploadWillCreateBlobWithXHR\",\n value: function directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n }, {\n key: \"directUploadWillStoreFileWithXHR\",\n value: function directUploadWillStoreFileWithXHR(xhr) {\n var _this2 = this;\n\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", function (event) {\n return _this2.uploadRequestDidProgress(event);\n });\n }\n }, {\n key: \"url\",\n get: function get$$1() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n }]);\n return DirectUploadController;\n }();\n\n var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\n var DirectUploadsController = function () {\n function DirectUploadsController(form) {\n classCallCheck(this, DirectUploadsController);\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter(function (input) {\n return input.files.length;\n });\n }\n\n createClass(DirectUploadsController, [{\n key: \"start\",\n value: function start(callback) {\n var _this = this;\n\n var controllers = this.createDirectUploadControllers();\n\n var startNextController = function startNextController() {\n var controller = controllers.shift();\n\n if (controller) {\n controller.start(function (error) {\n if (error) {\n callback(error);\n\n _this.dispatch(\"end\");\n } else {\n startNextController();\n }\n });\n } else {\n callback();\n\n _this.dispatch(\"end\");\n }\n };\n\n this.dispatch(\"start\");\n startNextController();\n }\n }, {\n key: \"createDirectUploadControllers\",\n value: function createDirectUploadControllers() {\n var controllers = [];\n this.inputs.forEach(function (input) {\n toArray$1(input.files).forEach(function (file) {\n var controller = new DirectUploadController(input, file);\n controllers.push(controller);\n });\n });\n return controllers;\n }\n }, {\n key: \"dispatch\",\n value: function dispatch(name) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n detail: detail\n });\n }\n }]);\n return DirectUploadsController;\n }();\n\n var processingAttribute = \"data-direct-uploads-processing\";\n var submitButtonsByForm = new WeakMap();\n var started = false;\n\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n\n function didClick(event) {\n var target = event.target;\n\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n }\n\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n\n function handleFormSubmissionEvent(event) {\n var form = event.target;\n\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n\n var controller = new DirectUploadsController(form);\n var inputs = controller.inputs;\n\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start(function (error) {\n form.removeAttribute(processingAttribute);\n\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n });\n }\n }\n\n function submitForm(form) {\n var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n\n if (button) {\n var _button = button,\n disabled = _button.disabled;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n\n submitButtonsByForm.delete(form);\n }\n\n function disable(input) {\n input.disabled = true;\n }\n\n function enable(input) {\n input.disabled = false;\n }\n\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n\n setTimeout(autostart, 1);\n exports.start = start;\n exports.DirectUpload = DirectUpload;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nmodule.exports = extend;\n/*\n var obj = {a: 3, b: 5};\n extend(obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n obj; // {a: 4, b: 5, c: 8}\n\n var obj = {a: 3, b: 5};\n extend({}, obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n obj; // {a: 3, b: 5}\n\n var arr = [1, 2, 3];\n var obj = {a: 3, b: 5};\n extend(obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n arr.push(4);\n obj; // {a: 3, b: 5, c: [1, 2, 3, 4]}\n\n var arr = [1, 2, 3];\n var obj = {a: 3, b: 5};\n extend(true, obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n arr.push(4);\n obj; // {a: 3, b: 5, c: [1, 2, 3]}\n\n extend({a: 4, b: 5}); // {a: 4, b: 5}\n extend({a: 4, b: 5}, 3); {a: 4, b: 5}\n extend({a: 4, b: 5}, true); {a: 4, b: 5}\n extend('hello', {a: 4, b: 5}); // throws\n extend(3, {a: 4, b: 5}); // throws\n*/\n\nfunction\n /* [deep], obj1, obj2, [objn] */\nextend() {\n var args = [].slice.call(arguments);\n var deep = false;\n\n if (typeof args[0] == 'boolean') {\n deep = args.shift();\n }\n\n var result = args[0];\n\n if (isUnextendable(result)) {\n throw new Error('extendee must be an object');\n }\n\n var extenders = args.slice(1);\n var len = extenders.length;\n\n for (var i = 0; i < len; i++) {\n var extender = extenders[i];\n\n for (var key in extender) {\n if (Object.prototype.hasOwnProperty.call(extender, key)) {\n var value = extender[key];\n\n if (deep && isCloneable(value)) {\n var base = Array.isArray(value) ? [] : {};\n result[key] = extend(true, Object.prototype.hasOwnProperty.call(result, key) && !isUnextendable(result[key]) ? result[key] : base, value);\n } else {\n result[key] = value;\n }\n }\n }\n }\n\n return result;\n}\n\nfunction isCloneable(obj) {\n return Array.isArray(obj) || {}.toString.call(obj) == '[object Object]';\n}\n\nfunction isUnextendable(val) {\n return !val || _typeof(val) != 'object' && typeof val != 'function';\n}","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 8;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","module.exports = Date.now || now;\n\nfunction now() {\n return new Date().getTime();\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*\nStimulus 3.2.1\nCopyright © 2023 Basecamp, LLC\n */\nvar EventListener = /*#__PURE__*/function () {\n function EventListener(eventTarget, eventName, eventOptions) {\n _classCallCheck(this, EventListener);\n\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.eventOptions = eventOptions;\n this.unorderedBindings = new Set();\n }\n\n _createClass(EventListener, [{\n key: \"connect\",\n value: function connect() {\n this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n }\n }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.unorderedBindings.add(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n this.unorderedBindings.delete(binding);\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n var extendedEvent = extendEvent(event);\n\n var _iterator = _createForOfIteratorHelper(this.bindings),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var binding = _step.value;\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"hasBindings\",\n value: function hasBindings() {\n return this.unorderedBindings.size > 0;\n }\n }, {\n key: \"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 }]);\n\n return EventListener;\n}();\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var _stopImmediatePropagation = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n\n _stopImmediatePropagation.call(this);\n }\n });\n }\n}\n\nvar Dispatcher = /*#__PURE__*/function () {\n function Dispatcher(application) {\n _classCallCheck(this, Dispatcher);\n\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n _createClass(Dispatcher, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n }\n }, {\n key: \"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 }, {\n key: \"bindingConnected\",\n value: function bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n }, {\n key: \"bindingDisconnected\",\n value: function bindingDisconnected(binding) {\n var clearEventListeners = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n if (clearEventListeners) this.clearEventListenersForBinding(binding);\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"clearEventListenersForBinding\",\n value: function clearEventListenersForBinding(binding) {\n var eventListener = this.fetchEventListenerForBinding(binding);\n\n if (!eventListener.hasBindings()) {\n eventListener.disconnect();\n this.removeMappedEventListenerFor(binding);\n }\n }\n }, {\n key: \"removeMappedEventListenerFor\",\n value: function removeMappedEventListenerFor(binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n eventListenerMap.delete(cacheKey);\n if (eventListenerMap.size == 0) this.eventListenerMaps.delete(eventTarget);\n }\n }, {\n key: \"fetchEventListenerForBinding\",\n value: function fetchEventListenerForBinding(binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName,\n eventOptions = binding.eventOptions;\n return this.fetchEventListener(eventTarget, eventName, eventOptions);\n }\n }, {\n key: \"fetchEventListener\",\n value: function fetchEventListener(eventTarget, eventName, eventOptions) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var cacheKey = this.cacheKey(eventName, eventOptions);\n var eventListener = eventListenerMap.get(cacheKey);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n eventListenerMap.set(cacheKey, eventListener);\n }\n\n return eventListener;\n }\n }, {\n key: \"createEventListener\",\n value: function createEventListener(eventTarget, eventName, eventOptions) {\n var eventListener = new EventListener(eventTarget, eventName, eventOptions);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n }\n }, {\n key: \"fetchEventListenerMapForEventTarget\",\n value: function fetchEventListenerMapForEventTarget(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 key: \"cacheKey\",\n value: function cacheKey(eventName, eventOptions) {\n var parts = [eventName];\n Object.keys(eventOptions).sort().forEach(function (key) {\n parts.push(\"\".concat(eventOptions[key] ? \"\" : \"!\").concat(key));\n });\n return parts.join(\":\");\n }\n }]);\n\n return Dispatcher;\n}();\n\nvar defaultActionDescriptorFilters = {\n stop: function stop(_ref) {\n var event = _ref.event,\n value = _ref.value;\n if (value) event.stopPropagation();\n return true;\n },\n prevent: function prevent(_ref2) {\n var event = _ref2.event,\n value = _ref2.value;\n if (value) event.preventDefault();\n return true;\n },\n self: function self(_ref3) {\n var event = _ref3.event,\n value = _ref3.value,\n element = _ref3.element;\n\n if (value) {\n return element === event.target;\n } else {\n return true;\n }\n }\n};\nvar descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\n\nfunction parseActionDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n var eventName = matches[2];\n var keyFilter = matches[3];\n\n if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n eventName += \".\".concat(keyFilter);\n keyFilter = \"\";\n }\n\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: eventName,\n eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n identifier: matches[5],\n methodName: matches[6],\n keyFilter: matches[1] || keyFilter\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nfunction parseEventOptions(eventOptions) {\n return eventOptions.split(\":\").reduce(function (options, token) {\n return Object.assign(options, _defineProperty({}, token.replace(/^!/, \"\"), !/^!/.test(token)));\n }, {});\n}\n\nfunction stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}\n\nfunction camelize(value) {\n return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) {\n return char.toUpperCase();\n });\n}\n\nfunction namespaceCamelize(value) {\n return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\n\nfunction capitalize(value) {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\".concat(char.toLowerCase());\n });\n}\n\nfunction tokenize(value) {\n return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n return object !== null && object !== undefined;\n}\n\nfunction hasProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nvar allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n\nvar Action = /*#__PURE__*/function () {\n function Action(element, index, descriptor, schema) {\n _classCallCheck(this, Action);\n\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.eventOptions = descriptor.eventOptions || {};\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n this.keyFilter = descriptor.keyFilter || \"\";\n this.schema = schema;\n }\n\n _createClass(Action, [{\n key: \"toString\",\n value: function toString() {\n var eventFilter = this.keyFilter ? \".\".concat(this.keyFilter) : \"\";\n var eventTarget = this.eventTargetName ? \"@\".concat(this.eventTargetName) : \"\";\n return \"\".concat(this.eventName).concat(eventFilter).concat(eventTarget, \"->\").concat(this.identifier, \"#\").concat(this.methodName);\n }\n }, {\n key: \"shouldIgnoreKeyboardEvent\",\n value: function shouldIgnoreKeyboardEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n\n var filters = this.keyFilter.split(\"+\");\n\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n\n var standardFilter = filters.filter(function (key) {\n return !allModifiers.includes(key);\n })[0];\n\n if (!standardFilter) {\n return false;\n }\n\n if (!hasProperty(this.keyMappings, standardFilter)) {\n error(\"contains unknown key filter: \".concat(this.keyFilter));\n }\n\n return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n }\n }, {\n key: \"shouldIgnoreMouseEvent\",\n value: function shouldIgnoreMouseEvent(event) {\n if (!this.keyFilter) {\n return false;\n }\n\n var filters = [this.keyFilter];\n\n if (this.keyFilterDissatisfied(event, filters)) {\n return true;\n }\n\n return false;\n }\n }, {\n key: \"params\",\n get: function get() {\n var params = {};\n var pattern = new RegExp(\"^data-\".concat(this.identifier, \"-(.+)-param$\"), \"i\");\n\n for (var _i = 0, _Array$from = Array.from(this.element.attributes); _i < _Array$from.length; _i++) {\n var _ref5 = _Array$from[_i];\n var name = _ref5.name;\n var value = _ref5.value;\n var match = name.match(pattern);\n var key = match && match[1];\n\n if (key) {\n params[camelize(key)] = typecast(value);\n }\n }\n\n return params;\n }\n }, {\n key: \"eventTargetName\",\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n }\n }, {\n key: \"keyMappings\",\n get: function get() {\n return this.schema.keyMappings;\n }\n }, {\n key: \"keyFilterDissatisfied\",\n value: function keyFilterDissatisfied(event, filters) {\n var _allModifiers$map = allModifiers.map(function (modifier) {\n return filters.includes(modifier);\n }),\n _allModifiers$map2 = _slicedToArray(_allModifiers$map, 4),\n meta = _allModifiers$map2[0],\n ctrl = _allModifiers$map2[1],\n alt = _allModifiers$map2[2],\n shift = _allModifiers$map2[3];\n\n return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n }\n }], [{\n key: \"forToken\",\n value: function forToken(token, schema) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n }\n }]);\n\n return Action;\n}();\n\nvar defaultEventNames = {\n a: function a() {\n return \"click\";\n },\n button: function button() {\n return \"click\";\n },\n form: function form() {\n return \"submit\";\n },\n details: function details() {\n return \"toggle\";\n },\n input: function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\";\n },\n select: function select() {\n return \"change\";\n },\n textarea: function textarea() {\n return \"input\";\n }\n};\n\nfunction 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}\n\nfunction typecast(value) {\n try {\n return JSON.parse(value);\n } catch (o_O) {\n return value;\n }\n}\n\nvar Binding = /*#__PURE__*/function () {\n function Binding(context, action) {\n _classCallCheck(this, Binding);\n\n this.context = context;\n this.action = action;\n }\n\n _createClass(Binding, [{\n key: \"index\",\n get: function get() {\n return this.action.index;\n }\n }, {\n key: \"eventTarget\",\n get: function get() {\n return this.action.eventTarget;\n }\n }, {\n key: \"eventOptions\",\n get: function get() {\n return this.action.eventOptions;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(event) {\n var actionEvent = this.prepareActionEvent(event);\n\n if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n this.invokeWithEvent(actionEvent);\n }\n }\n }, {\n key: \"eventName\",\n get: function get() {\n return this.action.eventName;\n }\n }, {\n key: \"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 \\\"\".concat(this.action, \"\\\" references undefined method \\\"\").concat(this.methodName, \"\\\"\"));\n }\n }, {\n key: \"applyEventModifiers\",\n value: function applyEventModifiers(event) {\n var element = this.action.element;\n var actionDescriptorFilters = this.context.application.actionDescriptorFilters;\n var controller = this.context.controller;\n var passes = true;\n\n for (var _i2 = 0, _Object$entries = Object.entries(this.eventOptions); _i2 < _Object$entries.length; _i2++) {\n var _ref8 = _Object$entries[_i2];\n\n var _ref7 = _slicedToArray(_ref8, 2);\n\n var name = _ref7[0];\n var value = _ref7[1];\n\n if (name in actionDescriptorFilters) {\n var filter = actionDescriptorFilters[name];\n passes = passes && filter({\n name: name,\n value: value,\n event: event,\n element: element,\n controller: controller\n });\n } else {\n continue;\n }\n }\n\n return passes;\n }\n }, {\n key: \"prepareActionEvent\",\n value: function prepareActionEvent(event) {\n return Object.assign(event, {\n params: this.action.params\n });\n }\n }, {\n key: \"invokeWithEvent\",\n value: function invokeWithEvent(event) {\n var target = event.target,\n currentTarget = event.currentTarget;\n\n try {\n this.method.call(this.controller, event);\n this.context.logDebugActivity(this.methodName, {\n event: event,\n target: target,\n currentTarget: currentTarget,\n action: this.methodName\n });\n } catch (error) {\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element,\n index = this.index;\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 \\\"\".concat(this.action, \"\\\"\"), detail);\n }\n }\n }, {\n key: \"willBeInvokedByEvent\",\n value: function willBeInvokedByEvent(event) {\n var eventTarget = event.target;\n\n if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n return false;\n }\n\n if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n return false;\n }\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 this.scope.containsElement(this.action.element);\n }\n }\n }, {\n key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"methodName\",\n get: function get() {\n return this.action.methodName;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return Binding;\n}();\n\nvar ElementObserver = /*#__PURE__*/function () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n _classCallCheck(this, ElementObserver);\n\n this.mutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true\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 _createClass(ElementObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.refresh();\n }\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n if (this.started) {\n this.mutationObserver.disconnect();\n this.started = false;\n }\n\n callback();\n\n if (!this.started) {\n this.mutationObserver.observe(this.element, this.mutationObserverInit);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i3 = 0, _Array$from2 = Array.from(this.elements); _i3 < _Array$from2.length; _i3++) {\n var element = _Array$from2[_i3];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _i4 = 0, _Array$from3 = Array.from(matches); _i4 < _Array$from3.length; _i4++) {\n var _element2 = _Array$from3[_i4];\n this.addElement(_element2);\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator2 = _createForOfIteratorHelper(mutations),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var mutation = _step2.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(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 key: \"processAttributeChange\",\n value: function processAttributeChange(element, attributeName) {\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 key: \"processRemovedNodes\",\n value: function processRemovedNodes(nodes) {\n for (var _i5 = 0, _Array$from4 = Array.from(nodes); _i5 < _Array$from4.length; _i5++) {\n var node = _Array$from4[_i5];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n }\n }, {\n key: \"processAddedNodes\",\n value: function processAddedNodes(nodes) {\n for (var _i6 = 0, _Array$from5 = Array.from(nodes); _i6 < _Array$from5.length; _i6++) {\n var node = _Array$from5[_i6];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return this.delegate.matchElement(element);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree() {\n var tree = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.element;\n return this.delegate.matchElementsInTree(tree);\n }\n }, {\n key: \"processTree\",\n value: function processTree(tree, processor) {\n var _iterator3 = _createForOfIteratorHelper(this.matchElementsInTree(tree)),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var element = _step3.value;\n processor.call(this, element);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"elementFromNode\",\n value: function elementFromNode(node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n }\n }, {\n key: \"elementIsActive\",\n value: function elementIsActive(element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }\n }, {\n key: \"addElement\",\n value: function addElement(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 key: \"removeElement\",\n value: function removeElement(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\n return ElementObserver;\n}();\n\nvar AttributeObserver = /*#__PURE__*/function () {\n function AttributeObserver(element, attributeName, delegate) {\n _classCallCheck(this, AttributeObserver);\n\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n _createClass(AttributeObserver, [{\n key: \"element\",\n get: function get() {\n return this.elementObserver.element;\n }\n }, {\n key: \"selector\",\n get: function get() {\n return \"[\".concat(this.attributeName, \"]\");\n }\n }, {\n key: \"start\",\n value: function start() {\n this.elementObserver.start();\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n this.elementObserver.pause(callback);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.elementObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.elementObserver.refresh();\n }\n }, {\n key: \"started\",\n get: function get() {\n return this.elementObserver.started;\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n return element.hasAttribute(this.attributeName);\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree(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 key: \"elementMatched\",\n value: function elementMatched(element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementUnmatched\",\n value: function elementUnmatched(element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n }\n }, {\n key: \"elementAttributeChanged\",\n value: function elementAttributeChanged(element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n }\n }]);\n\n return AttributeObserver;\n}();\n\nfunction _add(map, key, value) {\n fetch(map, key).add(value);\n}\n\nfunction del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\n\nfunction 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}\n\nfunction prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}\n\nvar Multimap = /*#__PURE__*/function () {\n function Multimap() {\n _classCallCheck(this, Multimap);\n\n this.valuesByKey = new Map();\n }\n\n _createClass(Multimap, [{\n key: \"keys\",\n get: function get() {\n return Array.from(this.valuesByKey.keys());\n }\n }, {\n key: \"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 }, {\n key: \"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 }, {\n key: \"add\",\n value: function add(key, value) {\n _add(this.valuesByKey, key, value);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n del(this.valuesByKey, key, value);\n }\n }, {\n key: \"has\",\n value: function has(key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n }\n }, {\n key: \"hasKey\",\n value: function hasKey(key) {\n return this.valuesByKey.has(key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n }\n }, {\n key: \"getValuesForKey\",\n value: function getValuesForKey(key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n return Array.from(this.valuesByKey).filter(function (_ref9) {\n var _ref10 = _slicedToArray(_ref9, 2),\n _key = _ref10[0],\n values = _ref10[1];\n\n return values.has(value);\n }).map(function (_ref11) {\n var _ref12 = _slicedToArray(_ref11, 2),\n key = _ref12[0],\n _values = _ref12[1];\n\n return key;\n });\n }\n }]);\n\n return Multimap;\n}();\n\nvar IndexedMultimap = /*#__PURE__*/function (_Multimap) {\n _inherits(IndexedMultimap, _Multimap);\n\n var _super = _createSuper(IndexedMultimap);\n\n function IndexedMultimap() {\n var _this2;\n\n _classCallCheck(this, IndexedMultimap);\n\n _this2 = _super.call(this);\n _this2.keysByValue = new Map();\n return _this2;\n }\n\n _createClass(IndexedMultimap, [{\n key: \"values\",\n get: function get() {\n return Array.from(this.keysByValue.keys());\n }\n }, {\n key: \"add\",\n value: function add(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"add\", this).call(this, key, value);\n\n _add(this.keysByValue, value, key);\n }\n }, {\n key: \"delete\",\n value: function _delete(key, value) {\n _get(_getPrototypeOf(IndexedMultimap.prototype), \"delete\", this).call(this, key, value);\n\n del(this.keysByValue, value, key);\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(value) {\n return this.keysByValue.has(value);\n }\n }, {\n key: \"getKeysForValue\",\n value: function getKeysForValue(value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n }\n }]);\n\n return IndexedMultimap;\n}(Multimap);\n\nvar SelectorObserver = /*#__PURE__*/function () {\n function SelectorObserver(element, selector, delegate, details) {\n _classCallCheck(this, SelectorObserver);\n\n this._selector = selector;\n this.details = details;\n this.elementObserver = new ElementObserver(element, this);\n this.delegate = delegate;\n this.matchesByElement = new Multimap();\n }\n\n _createClass(SelectorObserver, [{\n key: \"started\",\n get: function get() {\n return this.elementObserver.started;\n }\n }, {\n key: \"selector\",\n get: function get() {\n return this._selector;\n },\n set: function set(selector) {\n this._selector = selector;\n this.refresh();\n }\n }, {\n key: \"start\",\n value: function start() {\n this.elementObserver.start();\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n this.elementObserver.pause(callback);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.elementObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.elementObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.elementObserver.element;\n }\n }, {\n key: \"matchElement\",\n value: function matchElement(element) {\n var selector = this.selector;\n\n if (selector) {\n var matches = element.matches(selector);\n\n if (this.delegate.selectorMatchElement) {\n return matches && this.delegate.selectorMatchElement(element, this.details);\n }\n\n return matches;\n } else {\n return false;\n }\n }\n }, {\n key: \"matchElementsInTree\",\n value: function matchElementsInTree(tree) {\n var _this3 = this;\n\n var selector = this.selector;\n\n if (selector) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(selector)).filter(function (match) {\n return _this3.matchElement(match);\n });\n return match.concat(matches);\n } else {\n return [];\n }\n }\n }, {\n key: \"elementMatched\",\n value: function elementMatched(element) {\n var selector = this.selector;\n\n if (selector) {\n this.selectorMatched(element, selector);\n }\n }\n }, {\n key: \"elementUnmatched\",\n value: function elementUnmatched(element) {\n var selectors = this.matchesByElement.getKeysForValue(element);\n\n var _iterator4 = _createForOfIteratorHelper(selectors),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var selector = _step4.value;\n this.selectorUnmatched(element, selector);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n }, {\n key: \"elementAttributeChanged\",\n value: function elementAttributeChanged(element, _attributeName) {\n var selector = this.selector;\n\n if (selector) {\n var matches = this.matchElement(element);\n var matchedBefore = this.matchesByElement.has(selector, element);\n\n if (matches && !matchedBefore) {\n this.selectorMatched(element, selector);\n } else if (!matches && matchedBefore) {\n this.selectorUnmatched(element, selector);\n }\n }\n }\n }, {\n key: \"selectorMatched\",\n value: function selectorMatched(element, selector) {\n this.delegate.selectorMatched(element, selector, this.details);\n this.matchesByElement.add(selector, element);\n }\n }, {\n key: \"selectorUnmatched\",\n value: function selectorUnmatched(element, selector) {\n this.delegate.selectorUnmatched(element, selector, this.details);\n this.matchesByElement.delete(selector, element);\n }\n }]);\n\n return SelectorObserver;\n}();\n\nvar StringMapObserver = /*#__PURE__*/function () {\n function StringMapObserver(element, delegate) {\n var _this4 = this;\n\n _classCallCheck(this, StringMapObserver);\n\n this.element = element;\n this.delegate = delegate;\n this.started = false;\n this.stringMap = new Map();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this4.processMutations(mutations);\n });\n }\n\n _createClass(StringMapObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeOldValue: true\n });\n this.refresh();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (this.started) {\n var _iterator5 = _createForOfIteratorHelper(this.knownAttributeNames),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var attributeName = _step5.value;\n this.refreshAttribute(attributeName, null);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n }\n }, {\n key: \"processMutations\",\n value: function processMutations(mutations) {\n if (this.started) {\n var _iterator6 = _createForOfIteratorHelper(mutations),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var mutation = _step6.value;\n this.processMutation(mutation);\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n }\n }, {\n key: \"processMutation\",\n value: function processMutation(mutation) {\n var attributeName = mutation.attributeName;\n\n if (attributeName) {\n this.refreshAttribute(attributeName, mutation.oldValue);\n }\n }\n }, {\n key: \"refreshAttribute\",\n value: function refreshAttribute(attributeName, oldValue) {\n var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n\n if (key != null) {\n if (!this.stringMap.has(attributeName)) {\n this.stringMapKeyAdded(key, attributeName);\n }\n\n var value = this.element.getAttribute(attributeName);\n\n if (this.stringMap.get(attributeName) != value) {\n this.stringMapValueChanged(value, key, oldValue);\n }\n\n if (value == null) {\n var _oldValue = this.stringMap.get(attributeName);\n\n this.stringMap.delete(attributeName);\n if (_oldValue) this.stringMapKeyRemoved(key, attributeName, _oldValue);\n } else {\n this.stringMap.set(attributeName, value);\n }\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n if (this.delegate.stringMapKeyAdded) {\n this.delegate.stringMapKeyAdded(key, attributeName);\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, key, oldValue) {\n if (this.delegate.stringMapValueChanged) {\n this.delegate.stringMapValueChanged(value, key, oldValue);\n }\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n if (this.delegate.stringMapKeyRemoved) {\n this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n }\n }\n }, {\n key: \"knownAttributeNames\",\n get: function get() {\n return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n }\n }, {\n key: \"currentAttributeNames\",\n get: function get() {\n return Array.from(this.element.attributes).map(function (attribute) {\n return attribute.name;\n });\n }\n }, {\n key: \"recordedAttributeNames\",\n get: function get() {\n return Array.from(this.stringMap.keys());\n }\n }]);\n\n return StringMapObserver;\n}();\n\nvar TokenListObserver = /*#__PURE__*/function () {\n function TokenListObserver(element, attributeName, delegate) {\n _classCallCheck(this, TokenListObserver);\n\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n _createClass(TokenListObserver, [{\n key: \"started\",\n get: function get() {\n return this.attributeObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.attributeObserver.start();\n }\n }, {\n key: \"pause\",\n value: function pause(callback) {\n this.attributeObserver.pause(callback);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.attributeObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.attributeObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.attributeObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.attributeObserver.attributeName;\n }\n }, {\n key: \"elementMatchedAttribute\",\n value: function elementMatchedAttribute(element) {\n this.tokensMatched(this.readTokensForElement(element));\n }\n }, {\n key: \"elementAttributeValueChanged\",\n value: function elementAttributeValueChanged(element) {\n var _this$refreshTokensFo = this.refreshTokensForElement(element),\n _this$refreshTokensFo2 = _slicedToArray(_this$refreshTokensFo, 2),\n unmatchedTokens = _this$refreshTokensFo2[0],\n matchedTokens = _this$refreshTokensFo2[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n }\n }, {\n key: \"elementUnmatchedAttribute\",\n value: function elementUnmatchedAttribute(element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n }\n }, {\n key: \"tokensMatched\",\n value: function tokensMatched(tokens) {\n var _this5 = this;\n\n tokens.forEach(function (token) {\n return _this5.tokenMatched(token);\n });\n }\n }, {\n key: \"tokensUnmatched\",\n value: function tokensUnmatched(tokens) {\n var _this6 = this;\n\n tokens.forEach(function (token) {\n return _this6.tokenUnmatched(token);\n });\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n }\n }, {\n key: \"refreshTokensForElement\",\n value: function refreshTokensForElement(element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_ref13) {\n var _ref14 = _slicedToArray(_ref13, 2),\n previousToken = _ref14[0],\n currentToken = _ref14[1];\n\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 key: \"readTokensForElement\",\n value: function readTokensForElement(element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n }\n }]);\n\n return TokenListObserver;\n}();\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}\n\nvar ValueListObserver = /*#__PURE__*/function () {\n function ValueListObserver(element, attributeName, delegate) {\n _classCallCheck(this, ValueListObserver);\n\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 _createClass(ValueListObserver, [{\n key: \"started\",\n get: function get() {\n return this.tokenListObserver.started;\n }\n }, {\n key: \"start\",\n value: function start() {\n this.tokenListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.tokenListObserver.stop();\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.tokenListObserver.refresh();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.tokenListObserver.element;\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return this.tokenListObserver.attributeName;\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(token) {\n var element = token.element;\n\n var _this$fetchParseResul2 = this.fetchParseResultForToken(token),\n value = _this$fetchParseResul2.value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n }\n }, {\n key: \"fetchParseResultForToken\",\n value: function fetchParseResultForToken(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 key: \"fetchValuesByTokenForElement\",\n value: function fetchValuesByTokenForElement(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 key: \"parseToken\",\n value: function parseToken(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\n return ValueListObserver;\n}();\n\nvar BindingObserver = /*#__PURE__*/function () {\n function BindingObserver(context, delegate) {\n _classCallCheck(this, BindingObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n _createClass(BindingObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"actionAttribute\",\n get: function get() {\n return this.schema.actionAttribute;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.context.schema;\n }\n }, {\n key: \"bindings\",\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n }\n }, {\n key: \"connectAction\",\n value: function connectAction(action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n }\n }, {\n key: \"disconnectAction\",\n value: function disconnectAction(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 key: \"disconnectAllActions\",\n value: function disconnectAllActions() {\n var _this7 = this;\n\n this.bindings.forEach(function (binding) {\n return _this7.delegate.bindingDisconnected(binding, true);\n });\n this.bindingsByAction.clear();\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(token) {\n var action = Action.forToken(token, this.schema);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n }\n }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(element, action) {\n this.connectAction(action);\n }\n }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(element, action) {\n this.disconnectAction(action);\n }\n }]);\n\n return BindingObserver;\n}();\n\nvar ValueObserver = /*#__PURE__*/function () {\n function ValueObserver(context, receiver) {\n _classCallCheck(this, ValueObserver);\n\n this.context = context;\n this.receiver = receiver;\n this.stringMapObserver = new StringMapObserver(this.element, this);\n this.valueDescriptorMap = this.controller.valueDescriptorMap;\n }\n\n _createClass(ValueObserver, [{\n key: \"start\",\n value: function start() {\n this.stringMapObserver.start();\n this.invokeChangedCallbacksForDefaultValues();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.stringMapObserver.stop();\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"controller\",\n get: function get() {\n return this.context.controller;\n }\n }, {\n key: \"getStringMapKeyForAttribute\",\n value: function getStringMapKeyForAttribute(attributeName) {\n if (attributeName in this.valueDescriptorMap) {\n return this.valueDescriptorMap[attributeName].name;\n }\n }\n }, {\n key: \"stringMapKeyAdded\",\n value: function stringMapKeyAdded(key, attributeName) {\n var descriptor = this.valueDescriptorMap[attributeName];\n\n if (!this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n }\n }\n }, {\n key: \"stringMapValueChanged\",\n value: function stringMapValueChanged(value, name, oldValue) {\n var descriptor = this.valueDescriptorNameMap[name];\n if (value === null) return;\n\n if (oldValue === null) {\n oldValue = descriptor.writer(descriptor.defaultValue);\n }\n\n this.invokeChangedCallback(name, value, oldValue);\n }\n }, {\n key: \"stringMapKeyRemoved\",\n value: function stringMapKeyRemoved(key, attributeName, oldValue) {\n var descriptor = this.valueDescriptorNameMap[key];\n\n if (this.hasValue(key)) {\n this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n } else {\n this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n }\n }\n }, {\n key: \"invokeChangedCallbacksForDefaultValues\",\n value: function invokeChangedCallbacksForDefaultValues() {\n var _iterator7 = _createForOfIteratorHelper(this.valueDescriptors),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _ref16 = _step7.value;\n var key = _ref16.key;\n var name = _ref16.name;\n var defaultValue = _ref16.defaultValue;\n var writer = _ref16.writer;\n\n if (defaultValue != undefined && !this.controller.data.has(key)) {\n this.invokeChangedCallback(name, writer(defaultValue), undefined);\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n }, {\n key: \"invokeChangedCallback\",\n value: function invokeChangedCallback(name, rawValue, rawOldValue) {\n var changedMethodName = \"\".concat(name, \"Changed\");\n var changedMethod = this.receiver[changedMethodName];\n\n if (typeof changedMethod == \"function\") {\n var descriptor = this.valueDescriptorNameMap[name];\n\n try {\n var value = descriptor.reader(rawValue);\n var oldValue = rawOldValue;\n\n if (rawOldValue) {\n oldValue = descriptor.reader(rawOldValue);\n }\n\n changedMethod.call(this.receiver, value, oldValue);\n } catch (error) {\n if (error instanceof TypeError) {\n error.message = \"Stimulus Value \\\"\".concat(this.context.identifier, \".\").concat(descriptor.name, \"\\\" - \").concat(error.message);\n }\n\n throw error;\n }\n }\n }\n }, {\n key: \"valueDescriptors\",\n get: function get() {\n var valueDescriptorMap = this.valueDescriptorMap;\n return Object.keys(valueDescriptorMap).map(function (key) {\n return valueDescriptorMap[key];\n });\n }\n }, {\n key: \"valueDescriptorNameMap\",\n get: function get() {\n var _this8 = this;\n\n var descriptors = {};\n Object.keys(this.valueDescriptorMap).forEach(function (key) {\n var descriptor = _this8.valueDescriptorMap[key];\n descriptors[descriptor.name] = descriptor;\n });\n return descriptors;\n }\n }, {\n key: \"hasValue\",\n value: function hasValue(attributeName) {\n var descriptor = this.valueDescriptorNameMap[attributeName];\n var hasMethodName = \"has\".concat(capitalize(descriptor.name));\n return this.receiver[hasMethodName];\n }\n }]);\n\n return ValueObserver;\n}();\n\nvar TargetObserver = /*#__PURE__*/function () {\n function TargetObserver(context, delegate) {\n _classCallCheck(this, TargetObserver);\n\n this.context = context;\n this.delegate = delegate;\n this.targetsByName = new Multimap();\n }\n\n _createClass(TargetObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.tokenListObserver) {\n this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n this.tokenListObserver.start();\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.tokenListObserver) {\n this.disconnectAllTargets();\n this.tokenListObserver.stop();\n delete this.tokenListObserver;\n }\n }\n }, {\n key: \"tokenMatched\",\n value: function tokenMatched(_ref17) {\n var element = _ref17.element,\n name = _ref17.content;\n\n if (this.scope.containsElement(element)) {\n this.connectTarget(element, name);\n }\n }\n }, {\n key: \"tokenUnmatched\",\n value: function tokenUnmatched(_ref18) {\n var element = _ref18.element,\n name = _ref18.content;\n this.disconnectTarget(element, name);\n }\n }, {\n key: \"connectTarget\",\n value: function connectTarget(element, name) {\n var _this9 = this;\n\n var _a;\n\n if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this9.delegate.targetConnected(element, name);\n });\n }\n }\n }, {\n key: \"disconnectTarget\",\n value: function disconnectTarget(element, name) {\n var _this10 = this;\n\n var _a;\n\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this10.delegate.targetDisconnected(element, name);\n });\n }\n }\n }, {\n key: \"disconnectAllTargets\",\n value: function disconnectAllTargets() {\n var _iterator8 = _createForOfIteratorHelper(this.targetsByName.keys),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var name = _step8.value;\n\n var _iterator9 = _createForOfIteratorHelper(this.targetsByName.getValuesForKey(name)),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var element = _step9.value;\n this.disconnectTarget(element, name);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n }, {\n key: \"attributeName\",\n get: function get() {\n return \"data-\".concat(this.context.identifier, \"-target\");\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.context.element;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }]);\n\n return TargetObserver;\n}();\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (values, constructor) {\n getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {\n return values.add(name);\n });\n return values;\n }, new Set()));\n}\n\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n var ancestors = getAncestorsForConstructor(constructor);\n return ancestors.reduce(function (pairs, constructor) {\n pairs.push.apply(pairs, _toConsumableArray(getOwnStaticObjectPairs(constructor, propertyName)));\n return pairs;\n }, []);\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.reverse();\n}\n\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n var definition = constructor[propertyName];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n var definition = constructor[propertyName];\n return definition ? Object.keys(definition).map(function (key) {\n return [key, definition[key]];\n }) : [];\n}\n\nvar OutletObserver = /*#__PURE__*/function () {\n function OutletObserver(context, delegate) {\n _classCallCheck(this, OutletObserver);\n\n this.started = false;\n this.context = context;\n this.delegate = delegate;\n this.outletsByName = new Multimap();\n this.outletElementsByName = new Multimap();\n this.selectorObserverMap = new Map();\n this.attributeObserverMap = new Map();\n }\n\n _createClass(OutletObserver, [{\n key: \"start\",\n value: function start() {\n var _this11 = this;\n\n if (!this.started) {\n this.outletDefinitions.forEach(function (outletName) {\n _this11.setupSelectorObserverForOutlet(outletName);\n\n _this11.setupAttributeObserverForOutlet(outletName);\n });\n this.started = true;\n this.dependentContexts.forEach(function (context) {\n return context.refresh();\n });\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.selectorObserverMap.forEach(function (observer) {\n return observer.refresh();\n });\n this.attributeObserverMap.forEach(function (observer) {\n return observer.refresh();\n });\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n this.disconnectAllOutlets();\n this.stopSelectorObservers();\n this.stopAttributeObservers();\n }\n }\n }, {\n key: \"stopSelectorObservers\",\n value: function stopSelectorObservers() {\n if (this.selectorObserverMap.size > 0) {\n this.selectorObserverMap.forEach(function (observer) {\n return observer.stop();\n });\n this.selectorObserverMap.clear();\n }\n }\n }, {\n key: \"stopAttributeObservers\",\n value: function stopAttributeObservers() {\n if (this.attributeObserverMap.size > 0) {\n this.attributeObserverMap.forEach(function (observer) {\n return observer.stop();\n });\n this.attributeObserverMap.clear();\n }\n }\n }, {\n key: \"selectorMatched\",\n value: function selectorMatched(element, _selector, _ref19) {\n var outletName = _ref19.outletName;\n var outlet = this.getOutlet(element, outletName);\n\n if (outlet) {\n this.connectOutlet(outlet, element, outletName);\n }\n }\n }, {\n key: \"selectorUnmatched\",\n value: function selectorUnmatched(element, _selector, _ref20) {\n var outletName = _ref20.outletName;\n var outlet = this.getOutletFromMap(element, outletName);\n\n if (outlet) {\n this.disconnectOutlet(outlet, element, outletName);\n }\n }\n }, {\n key: \"selectorMatchElement\",\n value: function selectorMatchElement(element, _ref21) {\n var outletName = _ref21.outletName;\n var selector = this.selector(outletName);\n var hasOutlet = this.hasOutlet(element, outletName);\n var hasOutletController = element.matches(\"[\".concat(this.schema.controllerAttribute, \"~=\").concat(outletName, \"]\"));\n\n if (selector) {\n return hasOutlet && hasOutletController && element.matches(selector);\n } else {\n return false;\n }\n }\n }, {\n key: \"elementMatchedAttribute\",\n value: function elementMatchedAttribute(_element, attributeName) {\n var outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n }, {\n key: \"elementAttributeValueChanged\",\n value: function elementAttributeValueChanged(_element, attributeName) {\n var outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n }, {\n key: \"elementUnmatchedAttribute\",\n value: function elementUnmatchedAttribute(_element, attributeName) {\n var outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n\n if (outletName) {\n this.updateSelectorObserverForOutlet(outletName);\n }\n }\n }, {\n key: \"connectOutlet\",\n value: function connectOutlet(outlet, element, outletName) {\n var _this12 = this;\n\n var _a;\n\n if (!this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.add(outletName, outlet);\n this.outletElementsByName.add(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this12.delegate.outletConnected(outlet, element, outletName);\n });\n }\n }\n }, {\n key: \"disconnectOutlet\",\n value: function disconnectOutlet(outlet, element, outletName) {\n var _this13 = this;\n\n var _a;\n\n if (this.outletElementsByName.has(outletName, element)) {\n this.outletsByName.delete(outletName, outlet);\n this.outletElementsByName.delete(outletName, element);\n (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(function () {\n return _this13.delegate.outletDisconnected(outlet, element, outletName);\n });\n }\n }\n }, {\n key: \"disconnectAllOutlets\",\n value: function disconnectAllOutlets() {\n var _iterator10 = _createForOfIteratorHelper(this.outletElementsByName.keys),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var outletName = _step10.value;\n\n var _iterator11 = _createForOfIteratorHelper(this.outletElementsByName.getValuesForKey(outletName)),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var element = _step11.value;\n\n var _iterator12 = _createForOfIteratorHelper(this.outletsByName.getValuesForKey(outletName)),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var outlet = _step12.value;\n this.disconnectOutlet(outlet, element, outletName);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n }, {\n key: \"updateSelectorObserverForOutlet\",\n value: function updateSelectorObserverForOutlet(outletName) {\n var observer = this.selectorObserverMap.get(outletName);\n\n if (observer) {\n observer.selector = this.selector(outletName);\n }\n }\n }, {\n key: \"setupSelectorObserverForOutlet\",\n value: function setupSelectorObserverForOutlet(outletName) {\n var selector = this.selector(outletName);\n var selectorObserver = new SelectorObserver(document.body, selector, this, {\n outletName: outletName\n });\n this.selectorObserverMap.set(outletName, selectorObserver);\n selectorObserver.start();\n }\n }, {\n key: \"setupAttributeObserverForOutlet\",\n value: function setupAttributeObserverForOutlet(outletName) {\n var attributeName = this.attributeNameForOutletName(outletName);\n var attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n this.attributeObserverMap.set(outletName, attributeObserver);\n attributeObserver.start();\n }\n }, {\n key: \"selector\",\n value: function selector(outletName) {\n return this.scope.outlets.getSelectorForOutletName(outletName);\n }\n }, {\n key: \"attributeNameForOutletName\",\n value: function attributeNameForOutletName(outletName) {\n return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n }\n }, {\n key: \"getOutletNameFromOutletAttributeName\",\n value: function getOutletNameFromOutletAttributeName(attributeName) {\n var _this14 = this;\n\n return this.outletDefinitions.find(function (outletName) {\n return _this14.attributeNameForOutletName(outletName) === attributeName;\n });\n }\n }, {\n key: \"outletDependencies\",\n get: function get() {\n var dependencies = new Multimap();\n this.router.modules.forEach(function (module) {\n var constructor = module.definition.controllerConstructor;\n var outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n outlets.forEach(function (outlet) {\n return dependencies.add(outlet, module.identifier);\n });\n });\n return dependencies;\n }\n }, {\n key: \"outletDefinitions\",\n get: function get() {\n return this.outletDependencies.getKeysForValue(this.identifier);\n }\n }, {\n key: \"dependentControllerIdentifiers\",\n get: function get() {\n return this.outletDependencies.getValuesForKey(this.identifier);\n }\n }, {\n key: \"dependentContexts\",\n get: function get() {\n var identifiers = this.dependentControllerIdentifiers;\n return this.router.contexts.filter(function (context) {\n return identifiers.includes(context.identifier);\n });\n }\n }, {\n key: \"hasOutlet\",\n value: function hasOutlet(element, outletName) {\n return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n }\n }, {\n key: \"getOutlet\",\n value: function getOutlet(element, outletName) {\n return this.application.getControllerForElementAndIdentifier(element, outletName);\n }\n }, {\n key: \"getOutletFromMap\",\n value: function getOutletFromMap(element, outletName) {\n return this.outletsByName.getValuesForKey(outletName).find(function (outlet) {\n return outlet.element === element;\n });\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.context.schema;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.context.identifier;\n }\n }, {\n key: \"application\",\n get: function get() {\n return this.context.application;\n }\n }, {\n key: \"router\",\n get: function get() {\n return this.application.router;\n }\n }]);\n\n return OutletObserver;\n}();\n\nvar Context = /*#__PURE__*/function () {\n function Context(module, scope) {\n var _this15 = this;\n\n _classCallCheck(this, Context);\n\n this.logDebugActivity = function (functionName) {\n var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var identifier = _this15.identifier,\n controller = _this15.controller,\n element = _this15.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n\n _this15.application.logDebugActivity(_this15.identifier, functionName, detail);\n };\n\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n this.valueObserver = new ValueObserver(this, this.controller);\n this.targetObserver = new TargetObserver(this, this);\n this.outletObserver = new OutletObserver(this, this);\n\n try {\n this.controller.initialize();\n this.logDebugActivity(\"initialize\");\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n _createClass(Context, [{\n key: \"connect\",\n value: function connect() {\n this.bindingObserver.start();\n this.valueObserver.start();\n this.targetObserver.start();\n this.outletObserver.start();\n\n try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n this.outletObserver.refresh();\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n try {\n this.controller.disconnect();\n this.logDebugActivity(\"disconnect\");\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.outletObserver.stop();\n this.targetObserver.stop();\n this.valueObserver.stop();\n this.bindingObserver.stop();\n }\n }, {\n key: \"application\",\n get: function get() {\n return this.module.application;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.module.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"dispatcher\",\n get: function get() {\n return this.application.dispatcher;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"parentElement\",\n get: function get() {\n return this.element.parentElement;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var identifier = this.identifier,\n controller = this.controller,\n element = this.element;\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \".concat(message), detail);\n }\n }, {\n key: \"targetConnected\",\n value: function targetConnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetConnected\"), element);\n }\n }, {\n key: \"targetDisconnected\",\n value: function targetDisconnected(element, name) {\n this.invokeControllerMethod(\"\".concat(name, \"TargetDisconnected\"), element);\n }\n }, {\n key: \"outletConnected\",\n value: function outletConnected(outlet, element, name) {\n this.invokeControllerMethod(\"\".concat(namespaceCamelize(name), \"OutletConnected\"), outlet, element);\n }\n }, {\n key: \"outletDisconnected\",\n value: function outletDisconnected(outlet, element, name) {\n this.invokeControllerMethod(\"\".concat(namespaceCamelize(name), \"OutletDisconnected\"), outlet, element);\n }\n }, {\n key: \"invokeControllerMethod\",\n value: function invokeControllerMethod(methodName) {\n var controller = this.controller;\n\n if (typeof controller[methodName] == \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key2 = 1; _key2 < _len; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n controller[methodName].apply(controller, args);\n }\n }\n }]);\n\n return Context;\n}();\n\nfunction bless(constructor) {\n return shadow(constructor, getBlessedProperties(constructor));\n}\n\nfunction shadow(constructor, properties) {\n var shadowConstructor = extend(constructor);\n var shadowProperties = getShadowProperties(constructor.prototype, properties);\n Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n return shadowConstructor;\n}\n\nfunction getBlessedProperties(constructor) {\n var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n return blessings.reduce(function (blessedProperties, blessing) {\n var properties = blessing(constructor);\n\n for (var key in properties) {\n var descriptor = blessedProperties[key] || {};\n blessedProperties[key] = Object.assign(descriptor, properties[key]);\n }\n\n return blessedProperties;\n }, {});\n}\n\nfunction getShadowProperties(prototype, properties) {\n return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n var descriptor = getShadowedDescriptor(prototype, properties, key);\n\n if (descriptor) {\n Object.assign(shadowProperties, _defineProperty({}, key, descriptor));\n }\n\n return shadowProperties;\n }, {});\n}\n\nfunction getShadowedDescriptor(prototype, properties, key) {\n var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n\n if (!shadowedByValue) {\n var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n\n if (shadowingDescriptor) {\n descriptor.get = shadowingDescriptor.get || descriptor.get;\n descriptor.set = shadowingDescriptor.set || descriptor.set;\n }\n\n return descriptor;\n }\n}\n\nvar getOwnKeys = function () {\n if (typeof Object.getOwnPropertySymbols == \"function\") {\n return function (object) {\n return [].concat(_toConsumableArray(Object.getOwnPropertyNames(object)), _toConsumableArray(Object.getOwnPropertySymbols(object)));\n };\n } else {\n return Object.getOwnPropertyNames;\n }\n}();\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function extended() {\n return Reflect.construct(constructor, arguments, this instanceof extended ? this.constructor : void 0);\n }\n\n extended.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: extended\n }\n });\n Reflect.setPrototypeOf(extended, constructor);\n return extended;\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 /*#__PURE__*/function (_constructor) {\n _inherits(extended, _constructor);\n\n var _super2 = _createSuper(extended);\n\n function extended() {\n _classCallCheck(this, extended);\n\n return _super2.apply(this, arguments);\n }\n\n return _createClass(extended);\n }(constructor);\n };\n }\n}();\n\nfunction blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: bless(definition.controllerConstructor)\n };\n}\n\nvar Module = /*#__PURE__*/function () {\n function Module(application, definition) {\n _classCallCheck(this, Module);\n\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n _createClass(Module, [{\n key: \"identifier\",\n get: function get() {\n return this.definition.identifier;\n }\n }, {\n key: \"controllerConstructor\",\n get: function get() {\n return this.definition.controllerConstructor;\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return Array.from(this.connectedContexts);\n }\n }, {\n key: \"connectContextForScope\",\n value: function connectContextForScope(scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n }\n }, {\n key: \"disconnectContextForScope\",\n value: function disconnectContextForScope(scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n }\n }, {\n key: \"fetchContextForScope\",\n value: function fetchContextForScope(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\n return Module;\n}();\n\nvar ClassMap = /*#__PURE__*/function () {\n function ClassMap(scope) {\n _classCallCheck(this, ClassMap);\n\n this.scope = scope;\n }\n\n _createClass(ClassMap, [{\n key: \"has\",\n value: function has(name) {\n return this.data.has(this.getDataKey(name));\n }\n }, {\n key: \"get\",\n value: function get(name) {\n return this.getAll(name)[0];\n }\n }, {\n key: \"getAll\",\n value: function getAll(name) {\n var tokenString = this.data.get(this.getDataKey(name)) || \"\";\n return tokenize(tokenString);\n }\n }, {\n key: \"getAttributeName\",\n value: function getAttributeName(name) {\n return this.data.getAttributeNameForKey(this.getDataKey(name));\n }\n }, {\n key: \"getDataKey\",\n value: function getDataKey(name) {\n return \"\".concat(name, \"-class\");\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }]);\n\n return ClassMap;\n}();\n\nvar DataMap = /*#__PURE__*/function () {\n function DataMap(scope) {\n _classCallCheck(this, DataMap);\n\n this.scope = scope;\n }\n\n _createClass(DataMap, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.getAttribute(name);\n }\n }, {\n key: \"set\",\n value: function set(key, value) {\n var name = this.getAttributeNameForKey(key);\n this.element.setAttribute(name, value);\n return this.get(key);\n }\n }, {\n key: \"has\",\n value: function has(key) {\n var name = this.getAttributeNameForKey(key);\n return this.element.hasAttribute(name);\n }\n }, {\n key: \"delete\",\n value: function _delete(key) {\n if (this.has(key)) {\n var name = this.getAttributeNameForKey(key);\n this.element.removeAttribute(name);\n return true;\n } else {\n return false;\n }\n }\n }, {\n key: \"getAttributeNameForKey\",\n value: function getAttributeNameForKey(key) {\n return \"data-\".concat(this.identifier, \"-\").concat(dasherize(key));\n }\n }]);\n\n return DataMap;\n}();\n\nvar Guide = /*#__PURE__*/function () {\n function Guide(logger) {\n _classCallCheck(this, Guide);\n\n this.warnedKeysByObject = new WeakMap();\n this.logger = logger;\n }\n\n _createClass(Guide, [{\n key: \"warn\",\n value: function warn(object, key, message) {\n var warnedKeys = this.warnedKeysByObject.get(object);\n\n if (!warnedKeys) {\n warnedKeys = new Set();\n this.warnedKeysByObject.set(object, warnedKeys);\n }\n\n if (!warnedKeys.has(key)) {\n warnedKeys.add(key);\n this.logger.warn(message, object);\n }\n }\n }]);\n\n return Guide;\n}();\n\nfunction attributeValueContainsToken(attributeName, token) {\n return \"[\".concat(attributeName, \"~=\\\"\").concat(token, \"\\\"]\");\n}\n\nvar TargetSet = /*#__PURE__*/function () {\n function TargetSet(scope) {\n _classCallCheck(this, TargetSet);\n\n this.scope = scope;\n }\n\n _createClass(TargetSet, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.scope.schema;\n }\n }, {\n key: \"has\",\n value: function has(targetName) {\n return this.find(targetName) != null;\n }\n }, {\n key: \"find\",\n value: function find() {\n var _this16 = this;\n\n for (var _len2 = arguments.length, targetNames = new Array(_len2), _key3 = 0; _key3 < _len2; _key3++) {\n targetNames[_key3] = arguments[_key3];\n }\n\n return targetNames.reduce(function (target, targetName) {\n return target || _this16.findTarget(targetName) || _this16.findLegacyTarget(targetName);\n }, undefined);\n }\n }, {\n key: \"findAll\",\n value: function findAll() {\n var _this17 = this;\n\n for (var _len3 = arguments.length, targetNames = new Array(_len3), _key4 = 0; _key4 < _len3; _key4++) {\n targetNames[_key4] = arguments[_key4];\n }\n\n return targetNames.reduce(function (targets, targetName) {\n return [].concat(_toConsumableArray(targets), _toConsumableArray(_this17.findAllTargets(targetName)), _toConsumableArray(_this17.findAllLegacyTargets(targetName)));\n }, []);\n }\n }, {\n key: \"findTarget\",\n value: function findTarget(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findElement(selector);\n }\n }, {\n key: \"findAllTargets\",\n value: function findAllTargets(targetName) {\n var selector = this.getSelectorForTargetName(targetName);\n return this.scope.findAllElements(selector);\n }\n }, {\n key: \"getSelectorForTargetName\",\n value: function getSelectorForTargetName(targetName) {\n var attributeName = this.schema.targetAttributeForScope(this.identifier);\n return attributeValueContainsToken(attributeName, targetName);\n }\n }, {\n key: \"findLegacyTarget\",\n value: function findLegacyTarget(targetName) {\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.deprecate(this.scope.findElement(selector), targetName);\n }\n }, {\n key: \"findAllLegacyTargets\",\n value: function findAllLegacyTargets(targetName) {\n var _this18 = this;\n\n var selector = this.getLegacySelectorForTargetName(targetName);\n return this.scope.findAllElements(selector).map(function (element) {\n return _this18.deprecate(element, targetName);\n });\n }\n }, {\n key: \"getLegacySelectorForTargetName\",\n value: function getLegacySelectorForTargetName(targetName) {\n var targetDescriptor = \"\".concat(this.identifier, \".\").concat(targetName);\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n }\n }, {\n key: \"deprecate\",\n value: function deprecate(element, targetName) {\n if (element) {\n var identifier = this.identifier;\n var attributeName = this.schema.targetAttribute;\n var revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n this.guide.warn(element, \"target:\".concat(targetName), \"Please replace \".concat(attributeName, \"=\\\"\").concat(identifier, \".\").concat(targetName, \"\\\" with \").concat(revisedAttributeName, \"=\\\"\").concat(targetName, \"\\\". \") + \"The \".concat(attributeName, \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n }\n\n return element;\n }\n }, {\n key: \"guide\",\n get: function get() {\n return this.scope.guide;\n }\n }]);\n\n return TargetSet;\n}();\n\nvar OutletSet = /*#__PURE__*/function () {\n function OutletSet(scope, controllerElement) {\n _classCallCheck(this, OutletSet);\n\n this.scope = scope;\n this.controllerElement = controllerElement;\n }\n\n _createClass(OutletSet, [{\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.scope.schema;\n }\n }, {\n key: \"has\",\n value: function has(outletName) {\n return this.find(outletName) != null;\n }\n }, {\n key: \"find\",\n value: function find() {\n var _this19 = this;\n\n for (var _len4 = arguments.length, outletNames = new Array(_len4), _key5 = 0; _key5 < _len4; _key5++) {\n outletNames[_key5] = arguments[_key5];\n }\n\n return outletNames.reduce(function (outlet, outletName) {\n return outlet || _this19.findOutlet(outletName);\n }, undefined);\n }\n }, {\n key: \"findAll\",\n value: function findAll() {\n var _this20 = this;\n\n for (var _len5 = arguments.length, outletNames = new Array(_len5), _key6 = 0; _key6 < _len5; _key6++) {\n outletNames[_key6] = arguments[_key6];\n }\n\n return outletNames.reduce(function (outlets, outletName) {\n return [].concat(_toConsumableArray(outlets), _toConsumableArray(_this20.findAllOutlets(outletName)));\n }, []);\n }\n }, {\n key: \"getSelectorForOutletName\",\n value: function getSelectorForOutletName(outletName) {\n var attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n return this.controllerElement.getAttribute(attributeName);\n }\n }, {\n key: \"findOutlet\",\n value: function findOutlet(outletName) {\n var selector = this.getSelectorForOutletName(outletName);\n if (selector) return this.findElement(selector, outletName);\n }\n }, {\n key: \"findAllOutlets\",\n value: function findAllOutlets(outletName) {\n var selector = this.getSelectorForOutletName(outletName);\n return selector ? this.findAllElements(selector, outletName) : [];\n }\n }, {\n key: \"findElement\",\n value: function findElement(selector, outletName) {\n var _this21 = this;\n\n var elements = this.scope.queryElements(selector);\n return elements.filter(function (element) {\n return _this21.matchesElement(element, selector, outletName);\n })[0];\n }\n }, {\n key: \"findAllElements\",\n value: function findAllElements(selector, outletName) {\n var _this22 = this;\n\n var elements = this.scope.queryElements(selector);\n return elements.filter(function (element) {\n return _this22.matchesElement(element, selector, outletName);\n });\n }\n }, {\n key: \"matchesElement\",\n value: function matchesElement(element, selector, outletName) {\n var controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n }\n }]);\n\n return OutletSet;\n}();\n\nvar Scope = /*#__PURE__*/function () {\n function Scope(schema, element, identifier, logger) {\n var _this23 = this;\n\n _classCallCheck(this, Scope);\n\n this.targets = new TargetSet(this);\n this.classes = new ClassMap(this);\n this.data = new DataMap(this);\n\n this.containsElement = function (element) {\n return element.closest(_this23.controllerSelector) === _this23.element;\n };\n\n this.schema = schema;\n this.element = element;\n this.identifier = identifier;\n this.guide = new Guide(logger);\n this.outlets = new OutletSet(this.documentScope, element);\n }\n\n _createClass(Scope, [{\n key: \"findElement\",\n value: function findElement(selector) {\n return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n }\n }, {\n key: \"findAllElements\",\n value: function findAllElements(selector) {\n return [].concat(_toConsumableArray(this.element.matches(selector) ? [this.element] : []), _toConsumableArray(this.queryElements(selector).filter(this.containsElement)));\n }\n }, {\n key: \"queryElements\",\n value: function queryElements(selector) {\n return Array.from(this.element.querySelectorAll(selector));\n }\n }, {\n key: \"controllerSelector\",\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n }\n }, {\n key: \"isDocumentScope\",\n get: function get() {\n return this.element === document.documentElement;\n }\n }, {\n key: \"documentScope\",\n get: function get() {\n return this.isDocumentScope ? this : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n }\n }]);\n\n return Scope;\n}();\n\nvar ScopeObserver = /*#__PURE__*/function () {\n function ScopeObserver(element, schema, delegate) {\n _classCallCheck(this, ScopeObserver);\n\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 _createClass(ScopeObserver, [{\n key: \"start\",\n value: function start() {\n this.valueListObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.valueListObserver.stop();\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"parseValueForToken\",\n value: function parseValueForToken(token) {\n var element = token.element,\n identifier = token.content;\n return this.parseValueForElementAndIdentifier(element, identifier);\n }\n }, {\n key: \"parseValueForElementAndIdentifier\",\n value: function parseValueForElementAndIdentifier(element, identifier) {\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n }\n }, {\n key: \"elementMatchedValue\",\n value: function elementMatchedValue(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 }, {\n key: \"elementUnmatchedValue\",\n value: function elementUnmatchedValue(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 key: \"fetchScopesByIdentifierForElement\",\n value: function fetchScopesByIdentifierForElement(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\n return ScopeObserver;\n}();\n\nvar Router = /*#__PURE__*/function () {\n function Router(application) {\n _classCallCheck(this, Router);\n\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 _createClass(Router, [{\n key: \"element\",\n get: function get() {\n return this.application.element;\n }\n }, {\n key: \"schema\",\n get: function get() {\n return this.application.schema;\n }\n }, {\n key: \"logger\",\n get: function get() {\n return this.application.logger;\n }\n }, {\n key: \"controllerAttribute\",\n get: function get() {\n return this.schema.controllerAttribute;\n }\n }, {\n key: \"modules\",\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n }\n }, {\n key: \"contexts\",\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n }\n }, {\n key: \"start\",\n value: function start() {\n this.scopeObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.scopeObserver.stop();\n }\n }, {\n key: \"loadDefinition\",\n value: function loadDefinition(definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n var afterLoad = definition.controllerConstructor.afterLoad;\n\n if (afterLoad) {\n afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n }\n }\n }, {\n key: \"unloadIdentifier\",\n value: function unloadIdentifier(identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n }\n }, {\n key: \"getContextForElementAndIdentifier\",\n value: function getContextForElementAndIdentifier(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 }\n }, {\n key: \"proposeToConnectScopeForElementAndIdentifier\",\n value: function proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n var scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n\n if (scope) {\n this.scopeObserver.elementMatchedValue(scope.element, scope);\n } else {\n console.error(\"Couldn't find or create scope for identifier: \\\"\".concat(identifier, \"\\\" and element:\"), element);\n }\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n this.application.handleError(error, message, detail);\n }\n }, {\n key: \"createScopeForElementAndIdentifier\",\n value: function createScopeForElementAndIdentifier(element, identifier) {\n return new Scope(this.schema, element, identifier, this.logger);\n }\n }, {\n key: \"scopeConnected\",\n value: function scopeConnected(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 }, {\n key: \"scopeDisconnected\",\n value: function scopeDisconnected(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 }\n }, {\n key: \"connectModule\",\n value: function connectModule(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 key: \"disconnectModule\",\n value: function disconnectModule(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\n return Router;\n}();\n\nvar defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\",\n targetAttributeForScope: function targetAttributeForScope(identifier) {\n return \"data-\".concat(identifier, \"-target\");\n },\n outletAttributeForScope: function outletAttributeForScope(identifier, outlet) {\n return \"data-\".concat(identifier, \"-\").concat(outlet, \"-outlet\");\n },\n keyMappings: Object.assign(Object.assign({\n enter: \"Enter\",\n tab: \"Tab\",\n esc: \"Escape\",\n space: \" \",\n up: \"ArrowUp\",\n down: \"ArrowDown\",\n left: \"ArrowLeft\",\n right: \"ArrowRight\",\n home: \"Home\",\n end: \"End\",\n page_up: \"PageUp\",\n page_down: \"PageDown\"\n }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map(function (c) {\n return [c, c];\n }))), objectFromEntries(\"0123456789\".split(\"\").map(function (n) {\n return [n, n];\n })))\n};\n\nfunction objectFromEntries(array) {\n return array.reduce(function (memo, _ref22) {\n var _ref23 = _slicedToArray(_ref22, 2),\n k = _ref23[0],\n v = _ref23[1];\n\n return Object.assign(Object.assign({}, memo), _defineProperty({}, k, v));\n }, {});\n}\n\nvar Application = /*#__PURE__*/function () {\n function Application() {\n var _this24 = this;\n\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSchema;\n\n _classCallCheck(this, Application);\n\n this.logger = console;\n this.debug = false;\n\n this.logDebugActivity = function (identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (_this24.debug) {\n _this24.logFormattedMessage(identifier, functionName, detail);\n }\n };\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n }\n\n _createClass(Application, [{\n key: \"start\",\n value: function () {\n var _start = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return domReady();\n\n case 2:\n this.logDebugActivity(\"application\", \"starting\");\n this.dispatcher.start();\n this.router.start();\n this.logDebugActivity(\"application\", \"start\");\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function start() {\n return _start.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: \"stop\",\n value: function stop() {\n this.logDebugActivity(\"application\", \"stopping\");\n this.dispatcher.stop();\n this.router.stop();\n this.logDebugActivity(\"application\", \"stop\");\n }\n }, {\n key: \"register\",\n value: function register(identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n }\n }, {\n key: \"registerActionOption\",\n value: function registerActionOption(name, filter) {\n this.actionDescriptorFilters[name] = filter;\n }\n }, {\n key: \"load\",\n value: function load(head) {\n var _this25 = this;\n\n for (var _len6 = arguments.length, rest = new Array(_len6 > 1 ? _len6 - 1 : 0), _key7 = 1; _key7 < _len6; _key7++) {\n rest[_key7 - 1] = arguments[_key7];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n if (definition.controllerConstructor.shouldLoad) {\n _this25.router.loadDefinition(definition);\n }\n });\n }\n }, {\n key: \"unload\",\n value: function unload(head) {\n var _this26 = this;\n\n for (var _len7 = arguments.length, rest = new Array(_len7 > 1 ? _len7 - 1 : 0), _key8 = 1; _key8 < _len7; _key8++) {\n rest[_key8 - 1] = arguments[_key8];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this26.router.unloadIdentifier(identifier);\n });\n }\n }, {\n key: \"controllers\",\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n }\n }, {\n key: \"getControllerForElementAndIdentifier\",\n value: function getControllerForElementAndIdentifier(element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }\n }, {\n key: \"handleError\",\n value: function handleError(error, message, detail) {\n var _a;\n\n this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n }\n }, {\n key: \"logFormattedMessage\",\n value: function logFormattedMessage(identifier, functionName) {\n var detail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n detail = Object.assign({\n application: this\n }, detail);\n this.logger.groupCollapsed(\"\".concat(identifier, \" #\").concat(functionName));\n this.logger.log(\"details:\", Object.assign({}, detail));\n this.logger.groupEnd();\n }\n }], [{\n key: \"start\",\n value: function start(element, schema) {\n var application = new this(element, schema);\n application.start();\n return application;\n }\n }]);\n\n return Application;\n}();\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", function () {\n return resolve();\n });\n } else {\n resolve();\n }\n });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n return classes.reduce(function (properties, classDefinition) {\n return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n }, {});\n}\n\nfunction propertiesForClassDefinition(key) {\n var _ref24;\n\n return _ref24 = {}, _defineProperty(_ref24, \"\".concat(key, \"Class\"), {\n get: function get() {\n var classes = this.classes;\n\n if (classes.has(key)) {\n return classes.get(key);\n } else {\n var attribute = classes.getAttributeName(key);\n throw new Error(\"Missing attribute \\\"\".concat(attribute, \"\\\"\"));\n }\n }\n }), _defineProperty(_ref24, \"\".concat(key, \"Classes\"), {\n get: function get() {\n return this.classes.getAll(key);\n }\n }), _defineProperty(_ref24, \"has\".concat(capitalize(key), \"Class\"), {\n get: function get() {\n return this.classes.has(key);\n }\n }), _ref24;\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n var outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n return outlets.reduce(function (properties, outletDefinition) {\n return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n }, {});\n}\n\nfunction getOutletController(controller, element, identifier) {\n return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\n\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n var outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n outletController = getOutletController(controller, element, outletName);\n if (outletController) return outletController;\n}\n\nfunction propertiesForOutletDefinition(name) {\n var _ref25;\n\n var camelizedName = namespaceCamelize(name);\n return _ref25 = {}, _defineProperty(_ref25, \"\".concat(camelizedName, \"Outlet\"), {\n get: function get() {\n var outletElement = this.outlets.find(name);\n var selector = this.outlets.getSelectorForOutletName(name);\n\n if (outletElement) {\n var outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n if (outletController) return outletController;\n throw new Error(\"The provided outlet element is missing an outlet controller \\\"\".concat(name, \"\\\" instance for host controller \\\"\").concat(this.identifier, \"\\\"\"));\n }\n\n throw new Error(\"Missing outlet element \\\"\".concat(name, \"\\\" for host controller \\\"\").concat(this.identifier, \"\\\". Stimulus couldn't find a matching outlet element using selector \\\"\").concat(selector, \"\\\".\"));\n }\n }), _defineProperty(_ref25, \"\".concat(camelizedName, \"Outlets\"), {\n get: function get() {\n var _this27 = this;\n\n var outlets = this.outlets.findAll(name);\n\n if (outlets.length > 0) {\n return outlets.map(function (outletElement) {\n var outletController = getControllerAndEnsureConnectedScope(_this27, outletElement, name);\n if (outletController) return outletController;\n console.warn(\"The provided outlet element is missing an outlet controller \\\"\".concat(name, \"\\\" instance for host controller \\\"\").concat(_this27.identifier, \"\\\"\"), outletElement);\n }).filter(function (controller) {\n return controller;\n });\n }\n\n return [];\n }\n }), _defineProperty(_ref25, \"\".concat(camelizedName, \"OutletElement\"), {\n get: function get() {\n var outletElement = this.outlets.find(name);\n var selector = this.outlets.getSelectorForOutletName(name);\n\n if (outletElement) {\n return outletElement;\n } else {\n throw new Error(\"Missing outlet element \\\"\".concat(name, \"\\\" for host controller \\\"\").concat(this.identifier, \"\\\". Stimulus couldn't find a matching outlet element using selector \\\"\").concat(selector, \"\\\".\"));\n }\n }\n }), _defineProperty(_ref25, \"\".concat(camelizedName, \"OutletElements\"), {\n get: function get() {\n return this.outlets.findAll(name);\n }\n }), _defineProperty(_ref25, \"has\".concat(capitalize(camelizedName), \"Outlet\"), {\n get: function get() {\n return this.outlets.has(name);\n }\n }), _ref25;\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n return targets.reduce(function (properties, targetDefinition) {\n return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n }, {});\n}\n\nfunction propertiesForTargetDefinition(name) {\n var _ref26;\n\n return _ref26 = {}, _defineProperty(_ref26, \"\".concat(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 \\\"\".concat(name, \"\\\" for \\\"\").concat(this.identifier, \"\\\" controller\"));\n }\n }\n }), _defineProperty(_ref26, \"\".concat(name, \"Targets\"), {\n get: function get() {\n return this.targets.findAll(name);\n }\n }), _defineProperty(_ref26, \"has\".concat(capitalize(name), \"Target\"), {\n get: function get() {\n return this.targets.has(name);\n }\n }), _ref26;\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n var propertyDescriptorMap = {\n valueDescriptorMap: {\n get: function get() {\n var _this28 = this;\n\n return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, _this28.identifier);\n\n var attributeName = _this28.data.getAttributeNameForKey(valueDescriptor.key);\n\n return Object.assign(result, _defineProperty({}, attributeName, valueDescriptor));\n }, {});\n }\n }\n };\n return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n }, propertyDescriptorMap);\n}\n\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n var _ref27;\n\n var definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n var key = definition.key,\n name = definition.name,\n read = definition.reader,\n write = definition.writer;\n return _ref27 = {}, _defineProperty(_ref27, name, {\n get: function get() {\n var value = this.data.get(key);\n\n if (value !== null) {\n return read(value);\n } else {\n return definition.defaultValue;\n }\n },\n set: function set(value) {\n if (value === undefined) {\n this.data.delete(key);\n } else {\n this.data.set(key, write(value));\n }\n }\n }), _defineProperty(_ref27, \"has\".concat(capitalize(name)), {\n get: function get() {\n return this.data.has(key) || definition.hasCustomDefaultValue;\n }\n }), _ref27;\n}\n\nfunction parseValueDefinitionPair(_ref28, controller) {\n var _ref29 = _slicedToArray(_ref28, 2),\n token = _ref29[0],\n typeDefinition = _ref29[1];\n\n return valueDescriptorForTokenAndTypeDefinition({\n controller: controller,\n token: token,\n typeDefinition: typeDefinition\n });\n}\n\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array:\n return \"array\";\n\n case Boolean:\n return \"boolean\";\n\n case Number:\n return \"number\";\n\n case Object:\n return \"object\";\n\n case String:\n return \"string\";\n }\n}\n\nfunction parseValueTypeDefault(defaultValue) {\n switch (_typeof(defaultValue)) {\n case \"boolean\":\n return \"boolean\";\n\n case \"number\":\n return \"number\";\n\n case \"string\":\n return \"string\";\n }\n\n if (Array.isArray(defaultValue)) return \"array\";\n if (Object.prototype.toString.call(defaultValue) === \"[object Object]\") return \"object\";\n}\n\nfunction parseValueTypeObject(payload) {\n var controller = payload.controller,\n token = payload.token,\n typeObject = payload.typeObject;\n var hasType = isSomething(typeObject.type);\n var hasDefault = isSomething(typeObject.default);\n var fullObject = hasType && hasDefault;\n var onlyType = hasType && !hasDefault;\n var onlyDefault = !hasType && hasDefault;\n var typeFromObject = parseValueTypeConstant(typeObject.type);\n var typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n if (onlyType) return typeFromObject;\n if (onlyDefault) return typeFromDefaultValue;\n\n if (typeFromObject !== typeFromDefaultValue) {\n var propertyPath = controller ? \"\".concat(controller, \".\").concat(token) : token;\n throw new Error(\"The specified default value for the Stimulus Value \\\"\".concat(propertyPath, \"\\\" must match the defined type \\\"\").concat(typeFromObject, \"\\\". The provided default value of \\\"\").concat(typeObject.default, \"\\\" is of type \\\"\").concat(typeFromDefaultValue, \"\\\".\"));\n }\n\n if (fullObject) return typeFromObject;\n}\n\nfunction parseValueTypeDefinition(payload) {\n var controller = payload.controller,\n token = payload.token,\n typeDefinition = payload.typeDefinition;\n var typeObject = {\n controller: controller,\n token: token,\n typeObject: typeDefinition\n };\n var typeFromObject = parseValueTypeObject(typeObject);\n var typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n var typeFromConstant = parseValueTypeConstant(typeDefinition);\n var type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type) return type;\n var propertyPath = controller ? \"\".concat(controller, \".\").concat(typeDefinition) : token;\n throw new Error(\"Unknown value type \\\"\".concat(propertyPath, \"\\\" for \\\"\").concat(token, \"\\\" value\"));\n}\n\nfunction defaultValueForDefinition(typeDefinition) {\n var constant = parseValueTypeConstant(typeDefinition);\n if (constant) return defaultValuesByType[constant];\n var hasDefault = hasProperty(typeDefinition, \"default\");\n var hasType = hasProperty(typeDefinition, \"type\");\n var typeObject = typeDefinition;\n if (hasDefault) return typeObject.default;\n\n if (hasType) {\n var type = typeObject.type;\n var constantFromType = parseValueTypeConstant(type);\n if (constantFromType) return defaultValuesByType[constantFromType];\n }\n\n return typeDefinition;\n}\n\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n var token = payload.token,\n typeDefinition = payload.typeDefinition;\n var key = \"\".concat(dasherize(token), \"-value\");\n var type = parseValueTypeDefinition(payload);\n return {\n type: type,\n key: key,\n name: camelize(key),\n\n get defaultValue() {\n return defaultValueForDefinition(typeDefinition);\n },\n\n get hasCustomDefaultValue() {\n return parseValueTypeDefault(typeDefinition) !== undefined;\n },\n\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\n\nvar defaultValuesByType = {\n get array() {\n return [];\n },\n\n boolean: false,\n number: 0,\n\n get object() {\n return {};\n },\n\n string: \"\"\n};\nvar readers = {\n array: function array(value) {\n var array = JSON.parse(value);\n\n if (!Array.isArray(array)) {\n throw new TypeError(\"expected value of type \\\"array\\\" but instead got value \\\"\".concat(value, \"\\\" of type \\\"\").concat(parseValueTypeDefault(array), \"\\\"\"));\n }\n\n return array;\n },\n boolean: function boolean(value) {\n return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n },\n number: function number(value) {\n return Number(value.replace(/_/g, \"\"));\n },\n object: function object(value) {\n var object = JSON.parse(value);\n\n if (object === null || _typeof(object) != \"object\" || Array.isArray(object)) {\n throw new TypeError(\"expected value of type \\\"object\\\" but instead got value \\\"\".concat(value, \"\\\" of type \\\"\").concat(parseValueTypeDefault(object), \"\\\"\"));\n }\n\n return object;\n },\n string: function string(value) {\n return value;\n }\n};\nvar writers = {\n default: writeString,\n array: writeJSON,\n object: writeJSON\n};\n\nfunction writeJSON(value) {\n return JSON.stringify(value);\n}\n\nfunction writeString(value) {\n return \"\".concat(value);\n}\n\nvar Controller = /*#__PURE__*/function () {\n function Controller(context) {\n _classCallCheck(this, Controller);\n\n this.context = context;\n }\n\n _createClass(Controller, [{\n key: \"application\",\n get: function get() {\n return this.context.application;\n }\n }, {\n key: \"scope\",\n get: function get() {\n return this.context.scope;\n }\n }, {\n key: \"element\",\n get: function get() {\n return this.scope.element;\n }\n }, {\n key: \"identifier\",\n get: function get() {\n return this.scope.identifier;\n }\n }, {\n key: \"targets\",\n get: function get() {\n return this.scope.targets;\n }\n }, {\n key: \"outlets\",\n get: function get() {\n return this.scope.outlets;\n }\n }, {\n key: \"classes\",\n get: function get() {\n return this.scope.classes;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.scope.data;\n }\n }, {\n key: \"initialize\",\n value: function initialize() {}\n }, {\n key: \"connect\",\n value: function connect() {}\n }, {\n key: \"disconnect\",\n value: function disconnect() {}\n }, {\n key: \"dispatch\",\n value: function dispatch(eventName) {\n var _ref30 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref30$target = _ref30.target,\n target = _ref30$target === void 0 ? this.element : _ref30$target,\n _ref30$detail = _ref30.detail,\n detail = _ref30$detail === void 0 ? {} : _ref30$detail,\n _ref30$prefix = _ref30.prefix,\n prefix = _ref30$prefix === void 0 ? this.identifier : _ref30$prefix,\n _ref30$bubbles = _ref30.bubbles,\n bubbles = _ref30$bubbles === void 0 ? true : _ref30$bubbles,\n _ref30$cancelable = _ref30.cancelable,\n cancelable = _ref30$cancelable === void 0 ? true : _ref30$cancelable;\n\n var type = prefix ? \"\".concat(prefix, \":\").concat(eventName) : eventName;\n var event = new CustomEvent(type, {\n detail: detail,\n bubbles: bubbles,\n cancelable: cancelable\n });\n target.dispatchEvent(event);\n return event;\n }\n }], [{\n key: \"shouldLoad\",\n get: function get() {\n return true;\n }\n }, {\n key: \"afterLoad\",\n value: function afterLoad(_identifier, _application) {\n return;\n }\n }]);\n\n return Controller;\n}();\n\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing, OutletPropertiesBlessing];\nController.targets = [];\nController.outlets = [];\nController.values = {};\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, _add as add, defaultSchema, del, fetch, prune };","import { Application } from \"@hotwired/stimulus\"\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus = application\n\nexport { application }\n","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n\n static targets = [\"messageBoxSuccess\", \"messageBoxError\",\"addedCard\"]\n\n connect() {\n }\n \n addProvider(event) {\n let messageBoxSuccess = this.messageBoxSuccessTarget\n let messageBoxError = this.messageBoxErrorTarget\n let provider_id = event.srcElement.id\n console.log(provider_id)\n let api_key_id = \"api_key_\" + provider_id\n let api_key = document.getElementById(api_key_id).value\n let use_bc_credits_if_ooc = document.getElementById(\"use_bc_credits_if_ooc_\" + provider_id) == null ? false : document.getElementById(\"use_bc_credits_if_ooc_\" + provider_id).checked\n\n let data = new FormData()\n data.append(\"provider_id\", provider_id)\n data.append(\"api_key\", api_key)\n data.append(\"use_bc_credits_if_ooc\", use_bc_credits_if_ooc)\n console.log(provider_id)\n console.log(api_key)\n console.log(use_bc_credits_if_ooc)\n let response = Rails.ajax({\n url: '/user_api_credentials',\n type:'POST',\n data: data, \n success: function(data) {\n\n if (data.success){\n document.getElementById(api_key_id).value = \"\"\n document.getElementById(\"catalog_\" + provider_id).classList.add('hidden')\n //document.getElementById(\"sync_\" + provider_id).classList.remove(\"hidden\")\n messageBoxSuccess.classList.remove('invisible')\n document.getElementById(\"msg-content-add-success\").innerHTML = data.message\n setTimeout(() => { messageBoxSuccess.classList.add('invisible'); }, 5000);\n\n } else {\n document.getElementById(api_key_id).value = \"\"\n messageBoxError.classList.remove('invisible')\n document.getElementById(\"msg-content-add-error\").innerHTML = data.message\n setTimeout(() => { messageBoxError.classList.add('invisible'); }, 5000);\n }\n\n }\n })\n\n\n\n }\n\n addProviderLegacy(event) {\n\n let provider = document.getElementById('provider_name').value\n let api_key = document.getElementById('api_key').value\n\n let data = new FormData()\n data.append(\"provider_id\", provider)\n data.append(\"api_key\", api_key)\n data.append(\"use_bc_credits_if_ooc\", true)\n\n let response = Rails.ajax({\n url: '/user_api_credentials',\n type:'POST',\n data: data,\n success: function(data) {\n document.getElementById(\"returned_message\").classList.remove('hidden')\n Rails.$(\"#returned_message\")[0].innerHTML = data.message;\n if (data.success){\n document.getElementById(\"own_provider_card_\" + provider).classList.remove('hidden')\n }\n }\n })\n document.getElementById('api_key').value = \"\"\n setTimeout(() => { document.getElementById(\"returned_message\").classList.add('hidden'); }, 5000);\n }\n\n }","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n\n static targets = [\"messageBox\"]\n\n connect() {\n console.log(\"Admin controller\")\n }\n\n unstuckTask(){\n let messageBox = this.messageBoxTarget\n let taskId = event.srcElement.id\n console.log(taskId)\n\n Rails.ajax({\n url: \"/activity/unstuck/\" + taskId,\n type:'POST',\n success: function(data) {\n messageBox.classList.remove('invisible')\n let title = data.success ? \"Success\" : \"Error\"\n document.getElementById(\"messageBoxSuccessStatus\")._x_model.set(data.success.toString())\n document.getElementById(\"msg-title\").innerHTML = title\n document.getElementById(\"msg-content\").innerHTML = data.message\n setTimeout(() => { messageBox.classList.add('invisible'); }, 5000);\n\n }\n })\n }\n\n terminateTask(){\n let messageBox = this.messageBoxTarget\n let taskId = event.srcElement.id\n console.log(taskId)\n\n Rails.ajax({\n url: \"/activity/terminate/\" + taskId,\n type:'POST',\n success: function(data) {\n messageBox.classList.remove('invisible')\n let title = data.success ? \"Success\" : \"Error\"\n document.getElementById(\"messageBoxSuccessStatus\")._x_model.set(data.success.toString())\n document.getElementById(\"msg-title\").innerHTML = title\n document.getElementById(\"msg-content\").innerHTML = data.message\n setTimeout(() => { messageBox.classList.add('invisible'); }, 5000);\n\n }\n })\n }\n\n}","import { Controller } from \"@hotwired/stimulus\"\nimport debounce from \"debounce\";\n\n// Connects to data-controller=\"api-dashboard-search-form\"\nexport default class extends Controller {\n\n submit() {\n console.log(\"submit\")\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.element.requestSubmit()\n }, 250)\n }\n}","/**!\n * Sortable 1.15.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent; // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nimport Sortable from \"sortablejs\"\n\nexport default class extends Controller {\n connect() {\n this.sortable = Sortable.create(this.element, {\n onEnd: this.end.bind(this)\n })\n }\n end(){\n let providers = [...document.querySelectorAll('.selectedProvider')].map(x => x.innerHTML)\n let data = new FormData()\n data.append(\"fallback\", providers)\n\n Rails.ajax({\n url: this.data.get(\"url\"),\n type:'PUT',\n data: data\n })\n }\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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(_e) { throw _e; }, 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 = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport $ewBKy$justextend from \"just-extend\";\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nvar $4040acfd8584338d$export$2e2bcd8739ae039 = /*#__PURE__*/function () {\n function $4040acfd8584338d$export$2e2bcd8739ae039() {\n _classCallCheck(this, $4040acfd8584338d$export$2e2bcd8739ae039);\n }\n\n _createClass($4040acfd8584338d$export$2e2bcd8739ae039, [{\n key: \"on\",\n value: // Add an event listener for given event\n function on(event, fn) {\n this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n if (!this._callbacks[event]) this._callbacks[event] = [];\n\n this._callbacks[event].push(fn);\n\n return this;\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n this._callbacks = this._callbacks || {};\n var callbacks = this._callbacks[event];\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (callbacks) {\n var _iterator = _createForOfIteratorHelper(callbacks),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var callback = _step.value;\n callback.apply(this, args);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } // trigger a corresponding DOM event\n\n\n if (this.element) this.element.dispatchEvent(this.makeEvent(\"dropzone:\" + event, {\n args: args\n }));\n return this;\n }\n }, {\n key: \"makeEvent\",\n value: function makeEvent(eventName, detail) {\n var params = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n if (typeof window.CustomEvent === \"function\") return new CustomEvent(eventName, params);else {\n // IE 11 support\n // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n } // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n\n }, {\n key: \"off\",\n value: function off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n } // specific event\n\n\n var callbacks = this._callbacks[event];\n if (!callbacks) return this; // remove all handlers\n\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n } // remove specific handler\n\n\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n }]);\n\n return $4040acfd8584338d$export$2e2bcd8739ae039;\n}();\n\nvar $fd6031f88dce2e32$exports = {};\n$fd6031f88dce2e32$exports = \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n\";\nvar $4ca367182776f80b$var$defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form doesn't\n * have an `action` attribute).\n *\n * You can also provide a function that will be called with `files` and\n * `dataBlocks` and must return the url as string.\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n * If set to null or 0, no timeout is going to be set.\n */\n timeout: null,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2097152,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * The maximum filesize (in MiB) that is allowed to be uploaded.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: \"crop\",\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: \"contain\",\n\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */\n filesizeBase: 1000,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual\n * feedback.\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * Should the default headers be set or not?\n * Accept: application/json <- for requesting json response\n * Cache-Control: no-cache <- Request shouldnt be cached\n * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n */\n defaultHeaders: true,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * Set this to `true` if you don't want previews to be shown.\n */\n disablePreviews: false,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: {\n tb: \"TB\",\n gb: \"GB\",\n mb: \"MB\",\n kb: \"KB\",\n b: \"b\"\n },\n\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init: function init() {},\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params: function params(files, xhr, chunk) {\n if (chunk) return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n },\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept: function accept(file, done) {\n return done();\n },\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function chunksUploaded(file, done) {\n done();\n },\n\n /**\n * Sends the file as binary blob in body instead of form data.\n * If this is set, the `params` option will be ignored.\n * It's an error to set this to `true` along with `uploadMultiple` since\n * multiple files cannot be in a single binary body.\n */\n binaryBody: false,\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback: function fallback() {\n // This code should pass in IE7... :(\n var messageElement;\n this.element.className = \"\".concat(this.element.className, \" dz-browser-not-supported\");\n\n var _iterator2 = _createForOfIteratorHelper(this.element.getElementsByTagName(\"div\")),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var child = _step2.value;\n\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n\n break;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n if (!messageElement) {\n messageElement = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement('
');\n this.element.appendChild(messageElement);\n }\n\n var span = messageElement.getElementsByTagName(\"span\")[0];\n\n if (span) {\n if (span.textContent != null) span.textContent = this.options.dictFallbackMessage;else if (span.innerText != null) span.innerText = this.options.dictFallbackMessage;\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize: function resize(file, width, height, resizeMethod) {\n var info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified\n\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) width = height * srcRatio;else if (height == null) height = width / srcRatio; // Make sure images aren't upscaled\n\n\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n var trgRatio = width / height;\n\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === \"crop\") {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === \"contain\") {\n // Method 'contain'\n if (srcRatio > trgRatio) height = width / srcRatio;else width = height * srcRatio;\n } else throw new Error(\"Unknown resizeMethod '\".concat(resizeMethod, \"'\"));\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n info.trgWidth = width;\n info.trgHeight = height;\n return info;\n },\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile: function transformFile(file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);else return done(file);\n },\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: /*@__PURE__*/$parcel$interopDefault($fd6031f88dce2e32$exports),\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n // Those are self explanatory and simply concern the DragnDrop.\n drop: function drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart: function dragstart(e) {},\n dragend: function dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter: function dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover: function dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave: function dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste: function paste(e) {},\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset: function reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n // Called when a file is added to the queue\n // Receives `file`\n addedfile: function addedfile(file) {\n var _this = this;\n\n if (this.element === this.previewsContainer) this.element.classList.add(\"dz-started\");\n\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n\n var _iterator3 = _createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-name]\")),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var node = _step3.value;\n node.textContent = file.name;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n var _iterator4 = _createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-size]\")),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n node = _step4.value;\n node.innerHTML = this.filesize(file.size);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(\"\".concat(this.options.dictRemoveFile, \"\"));\n file.previewElement.appendChild(file._removeLink);\n }\n\n var removeFileEvent = function removeFileEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING) return $3ed269f2f0fb224b$export$2e2bcd8739ae039.confirm(_this.options.dictCancelUploadConfirmation, function () {\n return _this.removeFile(file);\n });else {\n if (_this.options.dictRemoveFileConfirmation) return $3ed269f2f0fb224b$export$2e2bcd8739ae039.confirm(_this.options.dictRemoveFileConfirmation, function () {\n return _this.removeFile(file);\n });else return _this.removeFile(file);\n }\n };\n\n var _iterator5 = _createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-remove]\")),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var removeLink = _step5.value;\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n },\n // Called whenever a file is removed.\n removedfile: function removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) file.previewElement.parentNode.removeChild(file.previewElement);\n return this._updateMaxFilesReachedClass();\n },\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail: function thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n\n var _iterator6 = _createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\")),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var thumbnailElement = _step6.value;\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return setTimeout(function () {\n return file.previewElement.classList.add(\"dz-image-preview\");\n }, 1);\n }\n },\n // Called whenever an error occurs\n // Receives `file` and `message`\n error: function error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n if (typeof message !== \"string\" && message.error) message = message.error;\n\n var _iterator7 = _createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-errormessage]\")),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var node = _step7.value;\n node.textContent = message;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n },\n errormultiple: function errormultiple() {},\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing: function processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n if (file._removeLink) return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n },\n processingmultiple: function processingmultiple() {},\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress: function uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n var _iterator8 = _createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\")),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var node = _step8.value;\n node.nodeName === \"PROGRESS\" ? node.value = progress : node.style.width = \"\".concat(progress, \"%\");\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n }\n },\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress: function totaluploadprogress() {},\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending: function sending() {},\n sendingmultiple: function sendingmultiple() {},\n // When the complete upload is finished and successful\n // Receives `file`\n success: function success(file) {\n if (file.previewElement) return file.previewElement.classList.add(\"dz-success\");\n },\n successmultiple: function successmultiple() {},\n // When the upload is canceled.\n canceled: function canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n canceledmultiple: function canceledmultiple() {},\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete: function complete(file) {\n if (file._removeLink) file._removeLink.innerHTML = this.options.dictRemoveFile;\n if (file.previewElement) return file.previewElement.classList.add(\"dz-complete\");\n },\n completemultiple: function completemultiple() {},\n maxfilesexceeded: function maxfilesexceeded() {},\n maxfilesreached: function maxfilesreached() {},\n queuecomplete: function queuecomplete() {},\n addedfiles: function addedfiles() {}\n};\nvar $4ca367182776f80b$export$2e2bcd8739ae039 = $4ca367182776f80b$var$defaultOptions;\n\nvar $3ed269f2f0fb224b$export$2e2bcd8739ae039 = /*#__PURE__*/function (_$4040acfd8584338d$ex) {\n _inherits($3ed269f2f0fb224b$export$2e2bcd8739ae039, _$4040acfd8584338d$ex);\n\n var _super = _createSuper($3ed269f2f0fb224b$export$2e2bcd8739ae039);\n\n function $3ed269f2f0fb224b$export$2e2bcd8739ae039(el, options) {\n var _this2;\n\n _classCallCheck(this, $3ed269f2f0fb224b$export$2e2bcd8739ae039);\n\n _this2 = _super.call(this);\n var fallback, left;\n _this2.element = el;\n _this2.clickableElements = [];\n _this2.listeners = [];\n _this2.files = []; // All files\n\n if (typeof _this2.element === \"string\") _this2.element = document.querySelector(_this2.element); // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n\n if (!_this2.element || _this2.element.nodeType == null) throw new Error(\"Invalid dropzone element.\");\n if (_this2.element.dropzone) throw new Error(\"Dropzone already attached.\"); // Now add this dropzone to the instances.\n\n $3ed269f2f0fb224b$export$2e2bcd8739ae039.instances.push(_assertThisInitialized(_this2)); // Put the dropzone inside the element itself.\n\n _this2.element.dropzone = _assertThisInitialized(_this2);\n var elementOptions = (left = $3ed269f2f0fb224b$export$2e2bcd8739ae039.optionsForElement(_this2.element)) != null ? left : {};\n _this2.options = $ewBKy$justextend(true, {}, $4ca367182776f80b$export$2e2bcd8739ae039, elementOptions, options != null ? options : {});\n _this2.options.previewTemplate = _this2.options.previewTemplate.replace(/\\n*/g, \"\"); // If the browser failed, just call the fallback and leave\n\n if (_this2.options.forceFallback || !$3ed269f2f0fb224b$export$2e2bcd8739ae039.isBrowserSupported()) return _possibleConstructorReturn(_this2, _this2.options.fallback.call(_assertThisInitialized(_this2))); // @options.url = @element.getAttribute \"action\" unless @options.url?\n\n if (_this2.options.url == null) _this2.options.url = _this2.element.getAttribute(\"action\");\n if (!_this2.options.url) throw new Error(\"No URL provided.\");\n if (_this2.options.acceptedFiles && _this2.options.acceptedMimeTypes) throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n if (_this2.options.uploadMultiple && _this2.options.chunking) throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n if (_this2.options.binaryBody && _this2.options.uploadMultiple) throw new Error(\"You cannot set both: binaryBody and uploadMultiple.\"); // Backwards compatibility\n\n if (_this2.options.acceptedMimeTypes) {\n _this2.options.acceptedFiles = _this2.options.acceptedMimeTypes;\n delete _this2.options.acceptedMimeTypes;\n } // Backwards compatibility\n\n\n if (_this2.options.renameFilename != null) _this2.options.renameFile = function (file) {\n return _this2.options.renameFilename.call(_assertThisInitialized(_this2), file.name, file);\n };\n if (typeof _this2.options.method === \"string\") _this2.options.method = _this2.options.method.toUpperCase();\n if ((fallback = _this2.getExistingFallback()) && fallback.parentNode) // Remove the fallback\n fallback.parentNode.removeChild(fallback); // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n\n if (_this2.options.previewsContainer !== false) {\n if (_this2.options.previewsContainer) _this2.previewsContainer = $3ed269f2f0fb224b$export$2e2bcd8739ae039.getElement(_this2.options.previewsContainer, \"previewsContainer\");else _this2.previewsContainer = _this2.element;\n }\n\n if (_this2.options.clickable) {\n if (_this2.options.clickable === true) _this2.clickableElements = [_this2.element];else _this2.clickableElements = $3ed269f2f0fb224b$export$2e2bcd8739ae039.getElements(_this2.options.clickable, \"clickable\");\n }\n\n _this2.init();\n\n return _this2;\n }\n\n _createClass($3ed269f2f0fb224b$export$2e2bcd8739ae039, [{\n key: \"getAcceptedFiles\",\n value: // Returns all files that have been accepted\n function getAcceptedFiles() {\n return this.files.filter(function (file) {\n return file.accepted;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n\n }, {\n key: \"getRejectedFiles\",\n value: function getRejectedFiles() {\n return this.files.filter(function (file) {\n return !file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n }, {\n key: \"getFilesWithStatus\",\n value: function getFilesWithStatus(status) {\n return this.files.filter(function (file) {\n return file.status === status;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that are in the queue\n\n }, {\n key: \"getQueuedFiles\",\n value: function getQueuedFiles() {\n return this.getFilesWithStatus($3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED);\n }\n }, {\n key: \"getUploadingFiles\",\n value: function getUploadingFiles() {\n return this.getFilesWithStatus($3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING);\n }\n }, {\n key: \"getAddedFiles\",\n value: function getAddedFiles() {\n return this.getFilesWithStatus($3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED);\n } // Files that are either queued or uploading\n\n }, {\n key: \"getActiveFiles\",\n value: function getActiveFiles() {\n return this.files.filter(function (file) {\n return file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING || file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED;\n }).map(function (file) {\n return file;\n });\n } // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n\n }, {\n key: \"init\",\n value: function init() {\n var _this3 = this;\n\n // In case it isn't set already\n if (this.element.tagName === \"form\") this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) this.element.appendChild($3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(\"
\")));\n\n if (this.clickableElements.length) {\n var setupHiddenFileInput = function setupHiddenFileInput() {\n if (_this3.hiddenFileInput) _this3.hiddenFileInput.parentNode.removeChild(_this3.hiddenFileInput);\n _this3.hiddenFileInput = document.createElement(\"input\");\n\n _this3.hiddenFileInput.setAttribute(\"type\", \"file\");\n\n if (_this3.options.maxFiles === null || _this3.options.maxFiles > 1) _this3.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n _this3.hiddenFileInput.className = \"dz-hidden-input\";\n if (_this3.options.acceptedFiles !== null) _this3.hiddenFileInput.setAttribute(\"accept\", _this3.options.acceptedFiles);\n if (_this3.options.capture !== null) _this3.hiddenFileInput.setAttribute(\"capture\", _this3.options.capture); // Making sure that no one can \"tab\" into this field.\n\n _this3.hiddenFileInput.setAttribute(\"tabindex\", \"-1\"); // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n\n\n _this3.hiddenFileInput.style.visibility = \"hidden\";\n _this3.hiddenFileInput.style.position = \"absolute\";\n _this3.hiddenFileInput.style.top = \"0\";\n _this3.hiddenFileInput.style.left = \"0\";\n _this3.hiddenFileInput.style.height = \"0\";\n _this3.hiddenFileInput.style.width = \"0\";\n $3ed269f2f0fb224b$export$2e2bcd8739ae039.getElement(_this3.options.hiddenInputContainer, \"hiddenInputContainer\").appendChild(_this3.hiddenFileInput);\n\n _this3.hiddenFileInput.addEventListener(\"change\", function () {\n var files = _this3.hiddenFileInput.files;\n\n if (files.length) {\n var _iterator9 = _createForOfIteratorHelper(files),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var file = _step9.value;\n\n _this3.addFile(file);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n }\n\n _this3.emit(\"addedfiles\", files);\n\n setupHiddenFileInput();\n });\n };\n\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n\n var _iterator10 = _createForOfIteratorHelper(this.events),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var eventName = _step10.value;\n this.on(eventName, this.options[eventName]);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n this.on(\"uploadprogress\", function () {\n return _this3.updateTotalUploadProgress();\n });\n this.on(\"removedfile\", function () {\n return _this3.updateTotalUploadProgress();\n });\n this.on(\"canceled\", function (file) {\n return _this3.emit(\"complete\", file);\n }); // Emit a `queuecomplete` event if all files finished uploading.\n\n this.on(\"complete\", function (file) {\n if (_this3.getAddedFiles().length === 0 && _this3.getUploadingFiles().length === 0 && _this3.getQueuedFiles().length === 0) // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(function () {\n return _this3.emit(\"queuecomplete\");\n }, 0);\n });\n\n var containsFiles = function containsFiles(e) {\n if (e.dataTransfer.types) // Because e.dataTransfer.types is an Object in\n // IE, we need to iterate like this instead of\n // using e.dataTransfer.types.some()\n for (var i = 0; i < e.dataTransfer.types.length; i++) {\n if (e.dataTransfer.types[i] === \"Files\") return true;\n }\n return false;\n };\n\n var noPropagation = function noPropagation(e) {\n // If there are no files, we don't want to stop\n // propagation so we don't interfere with other\n // drag and drop behaviour.\n if (!containsFiles(e)) return;\n e.stopPropagation();\n if (e.preventDefault) return e.preventDefault();else return e.returnValue = false;\n }; // Create the listeners\n\n\n this.listeners = [{\n element: this.element,\n events: {\n dragstart: function dragstart(e) {\n return _this3.emit(\"dragstart\", e);\n },\n dragenter: function dragenter(e) {\n noPropagation(e);\n return _this3.emit(\"dragenter\", e);\n },\n dragover: function dragover(e) {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n var efct;\n\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {}\n\n e.dataTransfer.dropEffect = \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n noPropagation(e);\n return _this3.emit(\"dragover\", e);\n },\n dragleave: function dragleave(e) {\n return _this3.emit(\"dragleave\", e);\n },\n drop: function drop(e) {\n noPropagation(e);\n return _this3.drop(e);\n },\n dragend: function dragend(e) {\n return _this3.emit(\"dragend\", e);\n }\n }\n }];\n this.clickableElements.forEach(function (clickableElement) {\n return _this3.listeners.push({\n element: clickableElement,\n events: {\n click: function click(evt) {\n // Only the actual dropzone or the message element should trigger file selection\n if (clickableElement !== _this3.element || evt.target === _this3.element || $3ed269f2f0fb224b$export$2e2bcd8739ae039.elementInside(evt.target, _this3.element.querySelector(\".dz-message\"))) _this3.hiddenFileInput.click(); // Forward the click\n\n return true;\n }\n }\n });\n });\n this.enable();\n return this.options.init.call(this);\n } // Not fully tested yet\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.disable();\n this.removeAllFiles(true);\n\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n\n delete this.element.dropzone;\n return $3ed269f2f0fb224b$export$2e2bcd8739ae039.instances.splice($3ed269f2f0fb224b$export$2e2bcd8739ae039.instances.indexOf(this), 1);\n }\n }, {\n key: \"updateTotalUploadProgress\",\n value: function updateTotalUploadProgress() {\n var totalUploadProgress;\n var totalBytesSent = 0;\n var totalBytes = 0;\n var activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n var _iterator11 = _createForOfIteratorHelper(this.getActiveFiles()),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var file = _step11.value;\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else totalUploadProgress = 100;\n\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n } // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n\n }, {\n key: \"_getParamName\",\n value: function _getParamName(n) {\n if (typeof this.options.paramName === \"function\") return this.options.paramName(n);else return \"\".concat(this.options.paramName).concat(this.options.uploadMultiple ? \"[\".concat(n, \"]\") : \"\");\n } // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n\n }, {\n key: \"_renameFile\",\n value: function _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") return file.name;\n return this.options.renameFile(file);\n } // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getFallbackForm\",\n value: function getFallbackForm() {\n var existingFallback, form;\n if (existingFallback = this.getExistingFallback()) return existingFallback;\n var fieldsString = '
';\n if (this.options.dictFallbackText) fieldsString += \"

\".concat(this.options.dictFallbackText, \"

\");\n fieldsString += \"
\");\n var fields = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(fieldsString);\n\n if (this.element.tagName !== \"FORM\") {\n form = $3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement(\"
\"));\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n\n return form != null ? form : fields;\n } // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getExistingFallback\",\n value: function getExistingFallback() {\n var getFallback = function getFallback(elements) {\n var _iterator12 = _createForOfIteratorHelper(elements),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var el = _step12.value;\n if (/(^| )fallback($| )/.test(el.className)) return el;\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n };\n\n for (var _i = 0, _arr = [\"div\", \"form\"]; _i < _arr.length; _i++) {\n var tagName = _arr[_i];\n var fallback;\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) return fallback;\n }\n } // Activates all listeners stored in @listeners\n\n }, {\n key: \"setupEventListeners\",\n value: function setupEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Deactivates all listeners stored in @listeners\n\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Removes all event listeners and cancels all files in the queue or being processed.\n\n }, {\n key: \"disable\",\n value: function disable() {\n var _this4 = this;\n\n this.clickableElements.forEach(function (element) {\n return element.classList.remove(\"dz-clickable\");\n });\n this.removeEventListeners();\n this.disabled = true;\n return this.files.map(function (file) {\n return _this4.cancelUpload(file);\n });\n }\n }, {\n key: \"enable\",\n value: function enable() {\n delete this.disabled;\n this.clickableElements.forEach(function (element) {\n return element.classList.add(\"dz-clickable\");\n });\n return this.setupEventListeners();\n } // Returns a nicely formatted filesize\n\n }, {\n key: \"filesize\",\n value: function filesize(size) {\n var selectedSize = 0;\n var selectedUnit = \"b\";\n\n if (size > 0) {\n var units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return \"\".concat(selectedSize, \" \").concat(this.options.dictFileSizeUnits[selectedUnit]);\n } // Adds or removes the `dz-max-files-reached` class from the form.\n\n }, {\n key: \"_updateMaxFilesReachedClass\",\n value: function _updateMaxFilesReachedClass() {\n if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) this.emit(\"maxfilesreached\", this.files);\n return this.element.classList.add(\"dz-max-files-reached\");\n } else return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }, {\n key: \"drop\",\n value: function drop(e) {\n if (!e.dataTransfer) return;\n this.emit(\"drop\", e); // Convert the FileList to an Array\n // This is necessary for IE11\n\n var files = [];\n\n for (var i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n } // Even if it's a folder, files.length will contain the folders.\n\n\n if (files.length) {\n var items = e.dataTransfer.items;\n if (items && items.length && items[0].webkitGetAsEntry != null) // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);else this.handleFiles(files);\n }\n\n this.emit(\"addedfiles\", files);\n }\n }, {\n key: \"paste\",\n value: function paste(e) {\n if ($3ed269f2f0fb224b$var$__guard__(e != null ? e.clipboardData : undefined, function (x) {\n return x.items;\n }) == null) return;\n this.emit(\"paste\", e);\n var items = e.clipboardData.items;\n if (items.length) return this._addFilesFromItems(items);\n }\n }, {\n key: \"handleFiles\",\n value: function handleFiles(files) {\n var _iterator13 = _createForOfIteratorHelper(files),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var file = _step13.value;\n this.addFile(file);\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n } // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n\n }, {\n key: \"_addFilesFromItems\",\n value: function _addFilesFromItems(items) {\n var _this5 = this;\n\n return function () {\n var result = [];\n\n var _iterator14 = _createForOfIteratorHelper(items),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var item = _step14.value;\n var entry;\n\n if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) result.push(_this5.addFile(item.getAsFile()));else if (entry.isDirectory) // Append all files from that directory to files\n result.push(_this5._addFilesFromDirectory(entry, entry.name));else result.push(undefined);\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") result.push(_this5.addFile(item.getAsFile()));else result.push(undefined);\n } else result.push(undefined);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n\n return result;\n }();\n } // Goes through the directory, and adds each file it finds recursively\n\n }, {\n key: \"_addFilesFromDirectory\",\n value: function _addFilesFromDirectory(directory, path) {\n var _this6 = this;\n\n var dirReader = directory.createReader();\n\n var errorHandler = function errorHandler(error) {\n return $3ed269f2f0fb224b$var$__guardMethod__(console, \"log\", function (o) {\n return o.log(error);\n });\n };\n\n var readEntries = function readEntries() {\n return dirReader.readEntries(function (entries) {\n if (entries.length > 0) {\n var _iterator15 = _createForOfIteratorHelper(entries),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var entry = _step15.value;\n if (entry.isFile) entry.file(function (file) {\n if (_this6.options.ignoreHiddenFiles && file.name.substring(0, 1) === \".\") return;\n file.fullPath = \"\".concat(path, \"/\").concat(file.name);\n return _this6.addFile(file);\n });else if (entry.isDirectory) _this6._addFilesFromDirectory(entry, \"\".concat(path, \"/\").concat(entry.name));\n } // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n\n readEntries();\n }\n\n return null;\n }, errorHandler);\n };\n\n return readEntries();\n } // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n\n }, {\n key: \"accept\",\n value: function accept(file, done) {\n if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1048576) done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));else if (!$3ed269f2f0fb224b$export$2e2bcd8739ae039.isValidFile(file, this.options.acceptedFiles)) done(this.options.dictInvalidFileType);else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n this.emit(\"maxfilesexceeded\", file);\n } else this.options.accept.call(this, file, done);\n }\n }, {\n key: \"addFile\",\n value: function addFile(file) {\n var _this7 = this;\n\n file.upload = {\n uuid: $3ed269f2f0fb224b$export$2e2bcd8739ae039.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file)\n };\n this.files.push(file);\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED;\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n this.accept(file, function (error) {\n if (error) {\n file.accepted = false;\n\n _this7._errorProcessing([file], error); // Will set the file.status\n\n } else {\n file.accepted = true;\n if (_this7.options.autoQueue) _this7.enqueueFile(file); // Will set .accepted = true\n }\n\n _this7._updateMaxFilesReachedClass();\n });\n } // Wrapper for enqueueFile\n\n }, {\n key: \"enqueueFiles\",\n value: function enqueueFiles(files) {\n var _iterator16 = _createForOfIteratorHelper(files),\n _step16;\n\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var file = _step16.value;\n this.enqueueFile(file);\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n\n return null;\n }\n }, {\n key: \"enqueueFile\",\n value: function enqueueFile(file) {\n var _this8 = this;\n\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED && file.accepted === true) {\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED;\n if (this.options.autoProcessQueue) return setTimeout(function () {\n return _this8.processQueue();\n }, 0); // Deferring the call\n } else throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n }, {\n key: \"_enqueueThumbnail\",\n value: function _enqueueThumbnail(file) {\n var _this9 = this;\n\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1048576) {\n this._thumbnailQueue.push(file);\n\n return setTimeout(function () {\n return _this9._processThumbnailQueue();\n }, 0); // Deferring the call\n }\n }\n }, {\n key: \"_processThumbnailQueue\",\n value: function _processThumbnailQueue() {\n var _this10 = this;\n\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) return;\n this._processingThumbnail = true;\n\n var file = this._thumbnailQueue.shift();\n\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n _this10.emit(\"thumbnail\", file, dataUrl);\n\n _this10._processingThumbnail = false;\n return _this10._processThumbnailQueue();\n });\n } // Can be called by the user to remove a file\n\n }, {\n key: \"removeFile\",\n value: function removeFile(file) {\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING) this.cancelUpload(file);\n this.files = $3ed269f2f0fb224b$var$without(this.files, file);\n this.emit(\"removedfile\", file);\n if (this.files.length === 0) return this.emit(\"reset\");\n } // Removes all files that aren't currently processed from the list\n\n }, {\n key: \"removeAllFiles\",\n value: function removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) cancelIfNecessary = false;\n\n var _iterator17 = _createForOfIteratorHelper(this.files.slice()),\n _step17;\n\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var file = _step17.value;\n if (file.status !== $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING || cancelIfNecessary) this.removeFile(file);\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n\n return null;\n } // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n\n }, {\n key: \"resizeImage\",\n value: function resizeImage(file, width, height, resizeMethod, callback) {\n var _this11 = this;\n\n return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n if (canvas == null) // The image has not been resized\n return callback(file);else {\n var resizeMimeType = _this11.options.resizeMimeType;\n if (resizeMimeType == null) resizeMimeType = file.type;\n var resizedDataURL = canvas.toDataURL(resizeMimeType, _this11.options.resizeQuality);\n if (resizeMimeType === \"image/jpeg\" || resizeMimeType === \"image/jpg\") // Now add the original EXIF information\n resizedDataURL = $3ed269f2f0fb224b$var$ExifRestore.restore(file.dataURL, resizedDataURL);\n return callback($3ed269f2f0fb224b$export$2e2bcd8739ae039.dataURItoBlob(resizedDataURL));\n }\n });\n }\n }, {\n key: \"createThumbnail\",\n value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n var _this12 = this;\n\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector\n\n if (file.type === \"image/svg+xml\") {\n if (callback != null) callback(fileReader.result);\n return;\n }\n\n _this12.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n\n fileReader.readAsDataURL(file);\n } // `mockFile` needs to have these attributes:\n //\n // { name: 'name', size: 12345, imageUrl: '' }\n //\n // `callback` will be invoked when the image has been downloaded and displayed.\n // `crossOrigin` will be added to the `img` tag when accessing the file.\n\n }, {\n key: \"displayExistingFile\",\n value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {\n var _this13 = this;\n\n var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n this.emit(\"addedfile\", mockFile);\n this.emit(\"complete\", mockFile);\n\n if (!resizeThumbnail) {\n this.emit(\"thumbnail\", mockFile, imageUrl);\n if (callback) callback();\n } else {\n var onDone = function onDone(thumbnail) {\n _this13.emit(\"thumbnail\", mockFile, thumbnail);\n\n if (callback) callback();\n };\n\n mockFile.dataURL = imageUrl;\n this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin);\n }\n }\n }, {\n key: \"createThumbnailFromUrl\",\n value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n var _this14 = this;\n\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n var img = document.createElement(\"img\");\n if (crossOrigin) img.crossOrigin = crossOrigin; // fixOrientation is not needed anymore with browsers handling imageOrientation\n\n fixOrientation = getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\" ? false : fixOrientation;\n\n img.onload = function () {\n var loadExif = function loadExif(callback) {\n return callback(1);\n };\n\n if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) loadExif = function loadExif(callback) {\n return EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, \"Orientation\"));\n });\n };\n return loadExif(function (orientation) {\n file.width = img.width;\n file.height = img.height;\n\n var resizeInfo = _this14.options.resize.call(_this14, file, width, height, resizeMethod);\n\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n } // This is a bugfix for iOS' scaling bug.\n\n\n $3ed269f2f0fb224b$var$drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n var thumbnail = canvas.toDataURL(\"image/png\");\n if (callback != null) return callback(thumbnail, canvas);\n });\n };\n\n if (callback != null) img.onerror = callback;\n return img.src = file.dataURL;\n } // Goes through the queue and processes files if there aren't too many already.\n\n }, {\n key: \"processQueue\",\n value: function processQueue() {\n var parallelUploads = this.options.parallelUploads;\n var processingLength = this.getUploadingFiles().length;\n var i = processingLength; // There are already at least as many files uploading than should be\n\n if (processingLength >= parallelUploads) return;\n var queuedFiles = this.getQueuedFiles();\n if (!(queuedFiles.length > 0)) return;\n if (this.options.uploadMultiple) // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));else while (i < parallelUploads) {\n if (!queuedFiles.length) return; // Nothing left to process\n\n this.processFile(queuedFiles.shift());\n i++;\n }\n } // Wrapper for `processFiles`\n\n }, {\n key: \"processFile\",\n value: function processFile(file) {\n return this.processFiles([file]);\n } // Loads the file, then calls finishedLoading()\n\n }, {\n key: \"processFiles\",\n value: function processFiles(files) {\n var _iterator18 = _createForOfIteratorHelper(files),\n _step18;\n\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var file = _step18.value;\n file.processing = true; // Backwards compatibility\n\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING;\n this.emit(\"processing\", file);\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n\n if (this.options.uploadMultiple) this.emit(\"processingmultiple\", files);\n return this.uploadFiles(files);\n }\n }, {\n key: \"_getFilesWithXhr\",\n value: function _getFilesWithXhr(xhr) {\n var files;\n return files = this.files.filter(function (file) {\n return file.xhr === xhr;\n }).map(function (file) {\n return file;\n });\n } // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n\n }, {\n key: \"cancelUpload\",\n value: function cancelUpload(file) {\n if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING) {\n var groupedFiles = this._getFilesWithXhr(file.xhr);\n\n var _iterator19 = _createForOfIteratorHelper(groupedFiles),\n _step19;\n\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var groupedFile = _step19.value;\n groupedFile.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED;\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n\n if (typeof file.xhr !== \"undefined\") file.xhr.abort();\n\n var _iterator20 = _createForOfIteratorHelper(groupedFiles),\n _step20;\n\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var groupedFile1 = _step20.value;\n this.emit(\"canceled\", groupedFile1);\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n\n if (this.options.uploadMultiple) this.emit(\"canceledmultiple\", groupedFiles);\n } else if (file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED || file.status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED) {\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED;\n this.emit(\"canceled\", file);\n if (this.options.uploadMultiple) this.emit(\"canceledmultiple\", [file]);\n }\n\n if (this.options.autoProcessQueue) return this.processQueue();\n }\n }, {\n key: \"resolveOption\",\n value: function resolveOption(option) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n if (typeof option === \"function\") return option.apply(this, args);\n return option;\n }\n }, {\n key: \"uploadFile\",\n value: function uploadFile(file) {\n return this.uploadFiles([file]);\n }\n }, {\n key: \"uploadFiles\",\n value: function uploadFiles(files) {\n var _this15 = this;\n\n this._transformFiles(files, function (transformedFiles) {\n if (_this15.options.chunking) {\n // Chunking is not allowed to be used with `uploadMultiple` so we know\n // that there is only __one__file.\n var transformedFile = transformedFiles[0];\n files[0].upload.chunked = _this15.options.chunking && (_this15.options.forceChunking || transformedFile.size > _this15.options.chunkSize);\n files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this15.options.chunkSize);\n }\n\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n var file = files[0];\n var _transformedFile = transformedFiles[0];\n var startedChunkCount = 0;\n file.upload.chunks = [];\n\n var handleNextChunk = function handleNextChunk() {\n var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.\n\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n } // This means, that all chunks have already been started.\n\n\n if (chunkIndex >= file.upload.totalChunkCount) return;\n startedChunkCount++;\n var start = chunkIndex * _this15.options.chunkSize;\n var end = Math.min(start + _this15.options.chunkSize, _transformedFile.size);\n var dataBlock = {\n name: _this15._getParamName(0),\n data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock,\n status: $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING,\n progress: 0,\n retries: 0\n };\n\n _this15._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = function (chunk, response) {\n var allFinished = true;\n chunk.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS; // Clear the data from the chunk\n\n chunk.dataBlock = null;\n chunk.response = chunk.xhr.responseText;\n chunk.responseHeaders = chunk.xhr.getAllResponseHeaders(); // Leaving this reference to xhr will cause memory leaks.\n\n chunk.xhr = null;\n\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] === undefined) return handleNextChunk();\n if (file.upload.chunks[i].status !== $3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS) allFinished = false;\n }\n\n if (allFinished) _this15.options.chunksUploaded(file, function () {\n _this15._finished(files, response, null);\n });\n };\n\n if (_this15.options.parallelChunkUploads) for (var i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n } else handleNextChunk();\n } else {\n var dataBlocks = [];\n\n for (var _i2 = 0; _i2 < files.length; _i2++) {\n dataBlocks[_i2] = {\n name: _this15._getParamName(_i2),\n data: transformedFiles[_i2],\n filename: files[_i2].upload.filename\n };\n }\n\n _this15._uploadData(files, dataBlocks);\n }\n });\n } /// Returns the right chunk for given file and xhr\n\n }, {\n key: \"_getChunk\",\n value: function _getChunk(file, xhr) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) return file.upload.chunks[i];\n }\n } // This function actually uploads the file(s) to the server.\n //\n // If dataBlocks contains the actual data to upload (meaning, that this could\n // either be transformed files, or individual chunks for chunked upload) then\n // they will be used for the actual data to upload.\n\n }, {\n key: \"_uploadData\",\n value: function _uploadData(files, dataBlocks) {\n var _this16 = this;\n\n var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.\n\n var _iterator21 = _createForOfIteratorHelper(files),\n _step21;\n\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var _file2 = _step21.value;\n _file2.xhr = xhr;\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n\n if (files[0].upload.chunked) // Put the xhr object in the right chunk object, so it can be associated\n // later, and found with _getChunk.\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n var method = this.resolveOption(this.options.method, files, dataBlocks);\n var url = this.resolveOption(this.options.url, files, dataBlocks);\n xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n\n var timeout = this.resolveOption(this.options.timeout, files);\n if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n xhr.withCredentials = !!this.options.withCredentials;\n\n xhr.onload = function (e) {\n _this16._finishedUploading(files, xhr, e);\n };\n\n xhr.ontimeout = function () {\n _this16._handleUploadError(files, xhr, \"Request timedout after \".concat(_this16.options.timeout / 1000, \" seconds\"));\n };\n\n xhr.onerror = function () {\n _this16._handleUploadError(files, xhr);\n }; // Some browsers do not have the .upload property\n\n\n var progressObj = xhr.upload != null ? xhr.upload : xhr;\n\n progressObj.onprogress = function (e) {\n return _this16._updateFilesUploadProgress(files, xhr, e);\n };\n\n var headers = this.options.defaultHeaders ? {\n Accept: \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n } : {};\n if (this.options.binaryBody) headers[\"Content-Type\"] = files[0].type;\n if (this.options.headers) $ewBKy$justextend(headers, this.options.headers);\n\n for (var headerName in headers) {\n var headerValue = headers[headerName];\n if (headerValue) xhr.setRequestHeader(headerName, headerValue);\n }\n\n if (this.options.binaryBody) {\n // Since the file is going to be sent as binary body, it doesn't make\n // any sense to generate `FormData` for it.\n var _iterator22 = _createForOfIteratorHelper(files),\n _step22;\n\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var file = _step22.value;\n this.emit(\"sending\", file, xhr);\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n\n if (this.options.uploadMultiple) this.emit(\"sendingmultiple\", files, xhr);\n this.submitRequest(xhr, null, files);\n } else {\n var formData = new FormData(); // Adding all @options parameters\n\n if (this.options.params) {\n var additionalParams = this.options.params;\n if (typeof additionalParams === \"function\") additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n\n for (var key in additionalParams) {\n var value = additionalParams[key];\n if (Array.isArray(value)) // The additional parameter contains an array,\n // so lets iterate over it to attach each value\n // individually.\n for (var i = 0; i < value.length; i++) {\n formData.append(key, value[i]);\n } else formData.append(key, value);\n }\n } // Let the user add additional data if necessary\n\n\n var _iterator23 = _createForOfIteratorHelper(files),\n _step23;\n\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n var _file = _step23.value;\n this.emit(\"sending\", _file, xhr, formData);\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n\n if (this.options.uploadMultiple) this.emit(\"sendingmultiple\", files, xhr, formData);\n\n this._addFormElementData(formData); // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n\n\n for (var _i3 = 0; _i3 < dataBlocks.length; _i3++) {\n var dataBlock = dataBlocks[_i3];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n }\n } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n }, {\n key: \"_transformFiles\",\n value: function _transformFiles(files, done) {\n var _this17 = this;\n\n var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n\n var doneCounter = 0;\n\n var _loop = function _loop(i) {\n _this17.options.transformFile.call(_this17, files[i], function (transformedFile) {\n transformedFiles[i] = transformedFile;\n if (++doneCounter === files.length) done(transformedFiles);\n });\n };\n\n for (var i = 0; i < files.length; i++) {\n _loop(i);\n }\n } // Takes care of adding other input elements of the form to the AJAX request\n\n }, {\n key: \"_addFormElementData\",\n value: function _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n var _iterator24 = _createForOfIteratorHelper(this.element.querySelectorAll(\"input, textarea, select, button\")),\n _step24;\n\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n var input = _step24.value;\n var inputName = input.getAttribute(\"name\");\n var inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.\n\n if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n var _iterator25 = _createForOfIteratorHelper(input.options),\n _step25;\n\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var option = _step25.value;\n if (option.selected) formData.append(inputName, option.value);\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) formData.append(inputName, input.value);\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n }\n } // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n\n }, {\n key: \"_updateFilesUploadProgress\",\n value: function _updateFilesUploadProgress(files, xhr, e) {\n if (!files[0].upload.chunked) {\n // Handle file uploads without chunking\n var _iterator26 = _createForOfIteratorHelper(files),\n _step26;\n\n try {\n for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {\n var file = _step26.value;\n if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) continue;\n\n if (e) {\n file.upload.progress = 100 * e.loaded / e.total;\n file.upload.total = e.total;\n file.upload.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n file.upload.progress = 100;\n file.upload.bytesSent = file.upload.total;\n }\n\n this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n }\n } catch (err) {\n _iterator26.e(err);\n } finally {\n _iterator26.f();\n }\n } else {\n // Handle chunked file uploads\n // Chunked upload is not compatible with uploading multiple files in one\n // request, so we know there's only one file.\n var _file3 = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk\n // progress.\n\n var chunk = this._getChunk(_file3, xhr);\n\n if (e) {\n chunk.progress = 100 * e.loaded / e.total;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n chunk.progress = 100;\n chunk.bytesSent = chunk.total;\n } // Now tally the *file* upload progress from its individual chunks\n\n\n _file3.upload.progress = 0;\n _file3.upload.total = 0;\n _file3.upload.bytesSent = 0;\n\n for (var i = 0; i < _file3.upload.totalChunkCount; i++) {\n if (_file3.upload.chunks[i] && typeof _file3.upload.chunks[i].progress !== \"undefined\") {\n _file3.upload.progress += _file3.upload.chunks[i].progress;\n _file3.upload.total += _file3.upload.chunks[i].total;\n _file3.upload.bytesSent += _file3.upload.chunks[i].bytesSent;\n }\n } // Since the process is a percentage, we need to divide by the amount of\n // chunks we've used.\n\n\n _file3.upload.progress = _file3.upload.progress / _file3.upload.totalChunkCount;\n this.emit(\"uploadprogress\", _file3, _file3.upload.progress, _file3.upload.bytesSent);\n }\n }\n }, {\n key: \"_finishedUploading\",\n value: function _finishedUploading(files, xhr, e) {\n var response;\n if (files[0].status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED) return;\n if (xhr.readyState !== 4) return;\n\n if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n response = xhr.responseText;\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n\n this._updateFilesUploadProgress(files, xhr);\n\n if (!(200 <= xhr.status && xhr.status < 300)) this._handleUploadError(files, xhr, response);else if (files[0].upload.chunked) files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response);else this._finished(files, response, e);\n }\n }, {\n key: \"_handleUploadError\",\n value: function _handleUploadError(files, xhr, response) {\n if (files[0].status === $3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED) return;\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n var chunk = this._getChunk(files[0], xhr);\n\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n\n return;\n } else console.warn(\"Retried this chunk too often. Giving up.\");\n }\n\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n }, {\n key: \"submitRequest\",\n value: function submitRequest(xhr, formData, files) {\n if (xhr.readyState != 1) {\n console.warn(\"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\");\n return;\n }\n\n if (this.options.binaryBody) {\n if (files[0].upload.chunked) {\n var chunk = this._getChunk(files[0], xhr);\n\n xhr.send(chunk.dataBlock.data);\n } else xhr.send(files[0]);\n } else xhr.send(formData);\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_finished\",\n value: function _finished(files, responseText, e) {\n var _iterator27 = _createForOfIteratorHelper(files),\n _step27;\n\n try {\n for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {\n var file = _step27.value;\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator27.e(err);\n } finally {\n _iterator27.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) return this.processQueue();\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_errorProcessing\",\n value: function _errorProcessing(files, message, xhr) {\n var _iterator28 = _createForOfIteratorHelper(files),\n _step28;\n\n try {\n for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {\n var file = _step28.value;\n file.status = $3ed269f2f0fb224b$export$2e2bcd8739ae039.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator28.e(err);\n } finally {\n _iterator28.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) return this.processQueue();\n }\n }], [{\n key: \"initClass\",\n value: function initClass() {\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = $4040acfd8584338d$export$2e2bcd8739ae039;\n /*\n This is a list of all available events you can register on a dropzone object.\n You can register an event handler like this:\n dropzone.on(\"dragEnter\", function() { });\n */\n\n this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n }\n }, {\n key: \"uuidv4\",\n value: function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0,\n v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n }\n }]);\n\n return $3ed269f2f0fb224b$export$2e2bcd8739ae039;\n}($4040acfd8584338d$export$2e2bcd8739ae039);\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.initClass(); // This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// And in html:\n//\n//
\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.options = {}; // Returns the options for an element or undefined if none available.\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) return $3ed269f2f0fb224b$export$2e2bcd8739ae039.options[$3ed269f2f0fb224b$var$camelize(element.getAttribute(\"id\"))];else return undefined;\n}; // Holds a list of all dropzone instances\n\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.instances = []; // Returns the dropzone for given element if any\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.forElement = function (element) {\n if (typeof element === \"string\") element = document.querySelector(element);\n if ((element != null ? element.dropzone : undefined) == null) throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n return element.dropzone;\n}; // Looks for all .dropzone elements and creates a dropzone for them\n\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.discover = function () {\n var dropzones;\n if (document.querySelectorAll) dropzones = document.querySelectorAll(\".dropzone\");else {\n dropzones = []; // IE :(\n\n var checkElements = function checkElements(elements) {\n return function () {\n var result = [];\n\n var _iterator29 = _createForOfIteratorHelper(elements),\n _step29;\n\n try {\n for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {\n var el = _step29.value;\n if (/(^| )dropzone($| )/.test(el.className)) result.push(dropzones.push(el));else result.push(undefined);\n }\n } catch (err) {\n _iterator29.e(err);\n } finally {\n _iterator29.f();\n }\n\n return result;\n }();\n };\n\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n return function () {\n var result = [];\n\n var _iterator30 = _createForOfIteratorHelper(dropzones),\n _step30;\n\n try {\n for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {\n var dropzone = _step30.value;\n // Create a dropzone unless auto discover has been disabled for specific element\n if ($3ed269f2f0fb224b$export$2e2bcd8739ae039.optionsForElement(dropzone) !== false) result.push(new $3ed269f2f0fb224b$export$2e2bcd8739ae039(dropzone));else result.push(undefined);\n }\n } catch (err) {\n _iterator30.e(err);\n } finally {\n _iterator30.f();\n }\n\n return result;\n }();\n}; // Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.blockedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i]; // Checks if the browser is supported\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.isBrowserSupported = function () {\n var capableBrowser = true;\n\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) capableBrowser = false;else {\n if ($3ed269f2f0fb224b$export$2e2bcd8739ae039.blacklistedBrowsers !== undefined) // Since this has been renamed, this makes sure we don't break older\n // configuration.\n $3ed269f2f0fb224b$export$2e2bcd8739ae039.blockedBrowsers = $3ed269f2f0fb224b$export$2e2bcd8739ae039.blacklistedBrowsers; // The browser supports the API, but may be blocked.\n\n var _iterator31 = _createForOfIteratorHelper($3ed269f2f0fb224b$export$2e2bcd8739ae039.blockedBrowsers),\n _step31;\n\n try {\n for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {\n var regex = _step31.value;\n\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n } catch (err) {\n _iterator31.e(err);\n } finally {\n _iterator31.f();\n }\n }\n } else capableBrowser = false;\n\n return capableBrowser;\n};\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(\",\")[1]); // separate out the mime component\n\n var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0]; // write the bytes of the string to an ArrayBuffer\n\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n ia[i] = byteString.charCodeAt(i);\n } // write the ArrayBuffer to a blob\n\n\n return new Blob([ab], {\n type: mimeString\n });\n}; // Returns an array without the rejected item\n\n\nvar $3ed269f2f0fb224b$var$without = function $3ed269f2f0fb224b$var$without(list, rejectedItem) {\n return list.filter(function (item) {\n return item !== rejectedItem;\n }).map(function (item) {\n return item;\n });\n}; // abc-def_ghi -> abcDefGhi\n\n\nvar $3ed269f2f0fb224b$var$camelize = function $3ed269f2f0fb224b$var$camelize(str) {\n return str.replace(/[\\-_](\\w)/g, function (match) {\n return match.charAt(1).toUpperCase();\n });\n}; // Creates an element from string\n\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.createElement = function (string) {\n var div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n}; // Tests if given element is inside (or simply is) the container\n\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.elementInside = function (element, container) {\n if (element === container) return true; // Coffeescript doesn't support do/while loops\n\n while (element = element.parentNode) {\n if (element === container) return true;\n }\n\n return false;\n};\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.getElement = function (el, name) {\n var element;\n if (typeof el === \"string\") element = document.querySelector(el);else if (el.nodeType != null) element = el;\n if (element == null) throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector or a plain HTML element.\"));\n return element;\n};\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.getElements = function (els, name) {\n var el, elements;\n\n if (els instanceof Array) {\n elements = [];\n\n try {\n var _iterator32 = _createForOfIteratorHelper(els),\n _step32;\n\n try {\n for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {\n el = _step32.value;\n elements.push(this.getElement(el, name));\n }\n } catch (err) {\n _iterator32.e(err);\n } finally {\n _iterator32.f();\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n\n var _iterator33 = _createForOfIteratorHelper(document.querySelectorAll(els)),\n _step33;\n\n try {\n for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {\n el = _step33.value;\n elements.push(el);\n }\n } catch (err) {\n _iterator33.e(err);\n } finally {\n _iterator33.f();\n }\n } else if (els.nodeType != null) elements = [els];\n\n if (elements == null || !elements.length) throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\"));\n return elements;\n}; // Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\n\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) return accepted();else if (rejected != null) return rejected();\n}; // Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\n\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) return true; // If there are no accepted mime types, it's OK\n\n acceptedFiles = acceptedFiles.split(\",\");\n var mimeType = file.type;\n var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n var _iterator34 = _createForOfIteratorHelper(acceptedFiles),\n _step34;\n\n try {\n for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {\n var validType = _step34.value;\n validType = validType.trim();\n\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) return true;\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) return true;\n } else {\n if (mimeType === validType) return true;\n }\n }\n } catch (err) {\n _iterator34.e(err);\n } finally {\n _iterator34.f();\n }\n\n return false;\n}; // Augment jQuery\n\n\nif (typeof jQuery !== \"undefined\" && jQuery !== null) jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new $3ed269f2f0fb224b$export$2e2bcd8739ae039(this, options);\n });\n}; // Dropzone file status codes\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.ADDED = \"added\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED = \"queued\"; // For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.ACCEPTED = $3ed269f2f0fb224b$export$2e2bcd8739ae039.QUEUED;\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING = \"uploading\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.PROCESSING = $3ed269f2f0fb224b$export$2e2bcd8739ae039.UPLOADING; // alias\n\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.CANCELED = \"canceled\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.ERROR = \"error\";\n$3ed269f2f0fb224b$export$2e2bcd8739ae039.SUCCESS = \"success\";\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\n\nvar $3ed269f2f0fb224b$var$detectVerticalSquash = function $3ed269f2f0fb224b$var$detectVerticalSquash(img) {\n var iw = img.naturalWidth;\n var ih = img.naturalHeight;\n var canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n\n var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.\n\n\n var sy = 0;\n var ey = ih;\n var py = ih;\n\n while (py > sy) {\n var alpha = data[(py - 1) * 4 + 3];\n if (alpha === 0) ey = py;else sy = py;\n py = ey + sy >> 1;\n }\n\n var ratio = py / ih;\n if (ratio === 0) return 1;else return ratio;\n}; // A replacement for context.drawImage\n// (args are for source and destination).\n\n\nvar $3ed269f2f0fb224b$var$drawImageIOSFix = function $3ed269f2f0fb224b$var$drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n var vertSquashRatio = $3ed269f2f0fb224b$var$detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n}; // Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\n\nvar $3ed269f2f0fb224b$var$ExifRestore = /*#__PURE__*/function () {\n function $3ed269f2f0fb224b$var$ExifRestore() {\n _classCallCheck(this, $3ed269f2f0fb224b$var$ExifRestore);\n }\n\n _createClass($3ed269f2f0fb224b$var$ExifRestore, null, [{\n key: \"initClass\",\n value: function initClass() {\n this.KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n }\n }, {\n key: \"encode64\",\n value: function encode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) enc3 = enc4 = 64;else if (isNaN(chr3)) enc4 = 64;\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n if (!(i < input.length)) break;\n }\n\n return output;\n }\n }, {\n key: \"restore\",\n value: function restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match(\"data:image/jpeg;base64,\")) return resizedFileBase64;\n var rawImage = this.decode64(origFileBase64.replace(\"data:image/jpeg;base64,\", \"\"));\n var segments = this.slice2Segments(rawImage);\n var image = this.exifManipulation(resizedFileBase64, segments);\n return \"data:image/jpeg;base64,\".concat(this.encode64(image));\n }\n }, {\n key: \"exifManipulation\",\n value: function exifManipulation(resizedFileBase64, segments) {\n var exifArray = this.getExifArray(segments);\n var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n var aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n }, {\n key: \"getExifArray\",\n value: function getExifArray(segments) {\n var seg = undefined;\n var x = 0;\n\n while (x < segments.length) {\n seg = segments[x];\n if (seg[0] === 255 & seg[1] === 225) return seg;\n x++;\n }\n\n return [];\n }\n }, {\n key: \"insertExif\",\n value: function insertExif(resizedFileBase64, exifArray) {\n var imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n var buf = this.decode64(imageData);\n var separatePoint = buf.indexOf(255, 3);\n var mae = buf.slice(0, separatePoint);\n var ato = buf.slice(separatePoint);\n var array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n }, {\n key: \"slice2Segments\",\n value: function slice2Segments(rawImageArray) {\n var head = 0;\n var segments = [];\n\n while (true) {\n var length;\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) break;\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) head += 2;else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n var endPoint = head + length + 2;\n var seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n if (head > rawImageArray.length) break;\n }\n\n return segments;\n }\n }, {\n key: \"decode64\",\n value: function decode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n if (base64test.exec(input)) console.warn(\"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\");\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n buf.push(chr1);\n if (enc3 !== 64) buf.push(chr2);\n if (enc4 !== 64) buf.push(chr3);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n if (!(i < input.length)) break;\n }\n\n return buf;\n }\n }]);\n\n return $3ed269f2f0fb224b$var$ExifRestore;\n}();\n\n$3ed269f2f0fb224b$var$ExifRestore.initClass();\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n// @win window reference\n// @fn function reference\n\nvar $3ed269f2f0fb224b$var$contentLoaded = function $3ed269f2f0fb224b$var$contentLoaded(win, fn) {\n var done = false;\n var top = true;\n var doc = win.document;\n var root = doc.documentElement;\n var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n var pre = doc.addEventListener ? \"\" : \"on\";\n\n var init = function init(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") return;\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n if (!done && (done = true)) return fn.call(win, e.type || e);\n };\n\n var poll = function poll() {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {}\n\n if (top) poll();\n }\n\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n};\n\nfunction $3ed269f2f0fb224b$var$__guard__(value, transform) {\n return typeof value !== \"undefined\" && value !== null ? transform(value) : undefined;\n}\n\nfunction $3ed269f2f0fb224b$var$__guardMethod__(obj, methodName, transform) {\n if (typeof obj !== \"undefined\" && obj !== null && typeof obj[methodName] === \"function\") return transform(obj, methodName);else return undefined;\n}\n\nexport { $3ed269f2f0fb224b$export$2e2bcd8739ae039 as default, $3ed269f2f0fb224b$export$2e2bcd8739ae039 as Dropzone };","\nexport function getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n \n export function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n \n export function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n \n export function removeElement(el) {\n if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n }\n \n export function insertAfter(el, referenceNode) {\n return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\n }","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\nimport Dropzone from \"dropzone\";\nimport { DirectUpload } from \"@rails/activestorage\";\n\nimport {\n getMetaValue,\n toArray,\n findElement,\n removeElement,\n insertAfter\n} from \"helpers\";\n\n\n\nexport default class extends Controller {\n static targets = [\"input\"];\n\n connect() {\n this.dropZone = createDropZone(this);\n this.hideFileInput();\n this.bindEvents();\n Dropzone.autoDiscover = false;\n }\n\n // Private\n hideFileInput() {\n this.inputTarget.disabled = true;\n this.inputTarget.style.display = \"none\";\n }\n\n bindEvents() {\n this.dropZone.on(\"addedfile\", file => {\n setTimeout(() => {\n file.accepted && createDirectUploadController(this, file).start();\n }, 500);\n });\n }\n\n get headers() {\n return { \"X-CSRF-Token\": getMetaValue(\"csrf-token\") };\n }\n\n get url() {\n return this.inputTarget.getAttribute(\"data-direct-upload-url\");\n }\n\n get maxFiles() {\n return this.data.get(\"maxFiles\") || 1;\n }\n\n get maxFileSize() {\n return this.data.get(\"maxFileSize\") || 256;\n }\n\n get acceptedFiles() {\n return this.data.get(\"acceptedFiles\");\n }\n\n get addRemoveLinks() {\n return this.data.get(\"addRemoveLinks\") || true;\n }\n}\n\nclass DirectUploadController {\n constructor(source, file) {\n this.directUpload = createDirectUpload(file, source.url, this);\n this.source = source;\n this.file = file;\n }\n\n start() {\n this.file.controller = this;\n this.hiddenInput = this.createHiddenInput();\n this.directUpload.create((error, attributes) => {\n if (error) {\n removeElement(this.hiddenInput);\n this.emitDropzoneError(error);\n } else {\n this.hiddenInput.value = attributes.signed_id;\n this.emitDropzoneSuccess();\n }\n });\n }\n\n createHiddenInput() {\n const input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.name = this.source.inputTarget.name;\n insertAfter(input, this.source.inputTarget);\n return input;\n }\n\n directUploadWillStoreFileWithXHR(xhr) {\n this.bindProgressEvent(xhr);\n this.emitDropzoneUploading();\n }\n\n bindProgressEvent(xhr) {\n this.xhr = xhr;\n this.xhr.upload.addEventListener(\"progress\", event =>\n this.uploadRequestDidProgress(event)\n );\n }\n\n uploadRequestDidProgress(event) {\n const element = this.source.element;\n const progress = (event.loaded / event.total) * 100;\n findElement(\n this.file.previewTemplate,\n \".dz-upload\"\n ).style.width = `${progress}%`;\n }\n\n emitDropzoneUploading() {\n this.file.status = Dropzone.UPLOADING;\n this.source.dropZone.emit(\"processing\", this.file);\n }\n\n emitDropzoneError(error) {\n this.file.status = Dropzone.ERROR;\n this.source.dropZone.emit(\"error\", this.file, error);\n this.source.dropZone.emit(\"complete\", this.file);\n }\n\n emitDropzoneSuccess() {\n this.file.status = Dropzone.SUCCESS;\n this.source.dropZone.emit(\"success\", this.file);\n this.source.dropZone.emit(\"complete\", this.file);\n document.getElementById('submit_btn').classList.remove(\"hidden\")\n }\n}\n\nfunction createDirectUploadController(source, file) {\n return new DirectUploadController(source, file);\n}\n\nfunction createDirectUpload(file, url, controller) {\n return new DirectUpload(file, url, controller);\n}\n\nfunction createDropZone(controller) {\n return new Dropzone(controller.element, {\n url: controller.url,\n headers: controller.headers,\n maxFiles: controller.maxFiles,\n maxFilesize: controller.maxFileSize,\n acceptedFiles: controller.acceptedFiles,\n addRemoveLinks: controller.addRemoveLinks,\n autoQueue: false\n });\n}","import { Controller } from \"@hotwired/stimulus\"\nimport debounce from \"debounce\";\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n\n static targets = [\"messageBox\",\"deliverable\",\"catchAll\",\"notFound\",\"taskUuid\",\"format\"]\n\n initialize() {\n this.submit = debounce(this.submit.bind(this), 350)\n }\n\n\n submit() {\n this.element.requestSubmit();\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.textContent = \"Hello World!\"\n }\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nimport Sortable from \"sortablejs\"\n\nexport default class extends Controller {\n static targets = [\"messageBoxError\", \"addBtn\"]\n\n\n connect() {\n }\n\n createPF(){\n let providers = [...document.querySelectorAll('.selectedProvider')].map(x => x.innerHTML)\n let messageBoxError = this.messageBoxErrorTarget\n let processFlowNameInput = document.getElementById(\"process-flow-name\").value\n let setDefault = document.getElementById(\"set_default\").value\n\n let data = new FormData()\n data.append(\"providers_name\", providers)\n data.append(\"process_flow_name\", processFlowNameInput)\n data.append(\"set_default\", setDefault)\n\n if (processFlowNameInput == \"\"){\n messageBoxError.classList.remove('invisible')\n document.getElementById(\"msg-content-add-error\").innerHTML = \"Please enter a process flow name\"\n setTimeout(() => { messageBoxError.classList.add('invisible'); }, 5000);\n } else {\n\n Rails.ajax({\n url: '/process_flows',\n type:'POST',\n data: data,\n success: function(data) {\n\n if (data.success){\n window.location.href = \"/process_flows\";\n } else {\n messageBoxError.classList.remove('invisible')\n document.getElementById(\"msg-content-add-error\").innerHTML = data.message\n setTimeout(() => { messageBoxError.classList.add('invisible'); }, 5000);\n }\n\n }\n })\n\n }\n }\n\n updatePF(){\n\n function getMetaValue(){\n const element = document.head.querySelector('meta[name=\"csrf-token\"]')\n return element.getAttribute(\"content\")\n }\n\n let providers = [...document.querySelectorAll('.selectedProvider')].map(x => x.innerHTML)\n let messageBoxError = this.messageBoxErrorTarget\n let processFlowNameInput = document.getElementById(\"process-flow-name\").value\n let setDefault = document.getElementById(\"set_default\").value\n let pfId = this.addBtnTarget.id\n\n let data = new FormData()\n data.append(\"providers_name\", providers)\n data.append(\"process_flow_name\", processFlowNameInput)\n data.append(\"set_default\", setDefault)\n\n if (processFlowNameInput == \"\"){\n messageBoxError.classList.remove('invisible')\n document.getElementById(\"msg-content-add-error\").innerHTML = \"Please enter a process flow name\"\n setTimeout(() => { messageBoxError.classList.add('invisible'); }, 5000);\n } else {\n\n Rails.ajax({\n url: \"/process_flows/\" + pfId,\n type: 'PUT',\n dataType: 'script',\n credentials: \"include\", headers: {\n \"X-CSRF-Token\": getMetaValue(\"csrf-token\")\n },\n data: data,\n success: function(data) {\n if (data.success){\n window.location.href = \"/process_flows\";\n } else {\n console.log(this)\n messageBoxError.classList.remove('invisible')\n document.getElementById(\"msg-content-add-error\").innerHTML = data.message\n setTimeout(() => { messageBoxError.classList.add('invisible'); }, 5000);\n }\n\n }\n })\n\n }\n }\n\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n static targets = [\"manual_selection_checkbox\", \"manual_providers_management_checkbox\",\"manual_order_checkbox\", \"provider\"]\n static values = { url: String }\n\n connect() {\n }\n\n\n\n toggleProvider() {\n\n const availableProviderId = \"available_provider_\" + this.element.id\n const connectedProviderId = \"connected_provider_\" + this.element.id\n\n //console.log(availableProviderId)\n //console.log(connectedProviderId)\n\n document.getElementById(availableProviderId).classList.toggle(\"hidden\");\n document.getElementById(connectedProviderId).classList.toggle(\"hidden\");\n\n\n //Fallback management\n const fallbackProviderId = \"fallback_provider_\"+this.element.id\n document.getElementById(fallbackProviderId).classList.toggle(\"hidden\");\n\n const fallbackProviderItemId = \"fallback_provider_item_\"+this.element.id\n document.getElementById(fallbackProviderItemId).classList.toggle(\"selectedProvider\")\n\n // Update API Order in back end\n this.updateApiOrder()\n\n }\n\n selectProvider() {\n\n let providerCard = this.providerTarget\n let messageBoxError = this.messageBoxErrorTarget\n\n // Change class of the provider card\n providerCard.classList.toggle(\"active-provider-selection\");\n\n document.getElementById(\"fallback_provider_item_\" + providerCard.id).classList.toggle(\"selectedProvider\")\n\n // Add to fallback\n const fallbackProviderCard = \"fallback_provider_\" + providerCard.id\n document.getElementById(fallbackProviderCard).classList.toggle(\"hidden\")\n\n }\n\n toggleManualProvidersManagement(){\n \n let data = new FormData()\n data.append(\"manual_providers_management\", this.manual_providers_management_checkboxTarget.checked)\n Rails.ajax({\n url: \"/users/1/manual_providers_management\",\n type:'PUT',\n data: data, \n success: function(data) { \n if (data.success){\n if (data.manual_providers_management){\n document.getElementById('advancedMode').classList.remove('hidden')\n //document.getElementById('automatedMode').classList.add('hidden')\n } else {\n document.getElementById('advancedMode').classList.add('hidden')\n //document.getElementById('automatedMode').classList.remove('hidden')\n } \n }\n }\n })\n }\n \n toggleManualScope(){\n \n //console.log(\"Valeur du mode selection : \" + this.manual_selection_checkboxTarget.checked)\n let data = new FormData()\n data.append(\"manual_providers_scope\", this.manual_selection_checkboxTarget.checked)\n Rails.ajax({\n url: \"/users/1/manual_providers_scope\",\n type:'PUT',\n data: data\n })\n }\n \n toggleManualOrder(){\n console.log(\"Valeur du mode order : \" + this.manual_order_checkboxTarget.checked)\n\n let data = new FormData()\n data.append(\"manual_providers_order\", this.manual_order_checkboxTarget.checked)\n Rails.ajax({\n url: \"/users/1/manual_providers_order\",\n type:'PUT',\n data: data\n })\n }\n\n updateApiOrder(){\n //console.log(\"Here we are\")\n let providers = [...document.querySelectorAll('.selectedProvider')].map(x => x.innerHTML)\n let data = new FormData()\n data.append(\"fallback\", providers)\n \n Rails.ajax({\n url: this.data.get(\"url\"),\n type:'PUT',\n data: data\n })\n }\n\n sliderLimitChange(){\n this.updateUserPreference();\n this.updateDisplayedEmailProviders();\n }\n\n updateUserPreference(){\n //console.log(\"Hello from AJAX call\")\n let data = new FormData()\n data.append(\"max_email_cost\", parseInt(document.getElementById('max_email_cost_input').value))\n \n Rails.ajax({\n url: this.data.get(\"url\"),\n type:'PUT',\n data: data\n })\n }\n\n updateDisplayedEmailProviders(){\n //console.log(\"max email cost : \" + parseInt(document.getElementById('max_email_cost_input').value));\n [...document.querySelectorAll('#email_providers_list > div')].filter(x => parseInt(x.dataset.rate) > parseInt(document.getElementById('max_email_cost_input').value) ).forEach(x => x.classList.add(\"hidden\"));\n [...document.querySelectorAll('#email_providers_list > div')].filter(x => parseInt(x.dataset.rate) <= parseInt(document.getElementById('max_email_cost_input').value) ).forEach(x => x.classList.remove(\"hidden\"));\n }\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n\n static targets = [\"SmartLead\"]\n\n\n connect() {\n }\n\n loadCampaigns(event){\n document.getElementById( \"list_campaigns\").classList.add(\"hidden\");\n //document.getElementById( \"push_to_response\").classList.add(\"hidden\");\n document.getElementById( \"campaignsListLoader\").classList.remove(\"hidden\");\n var tool = document.getElementById(\"tool\").value\n Rails.ajax({\n url: \"/users/get_campaigns?tool_name=\" + tool,\n //url: \"/users/get_campaigns?tool_name=X\",\n type: 'GET',\n success: function (data) {\n console.log(data);\n if (data.success) {\n console.log(\"success\")\n // Get the select element by its name attribute\n var selectBox = document.querySelector('select[name=\"list_campaigns\"]');\n\n // Clear the existing options\n selectBox.innerHTML = '';\n\n // Add new options from the campaigns array\n data.data.forEach(function(campaign) {\n // Create a new option element\n var newOption = document.createElement('option');\n\n // Set the text and value for the option\n newOption.text = campaign.name; // Displayed text\n newOption.value = campaign.id; // Option value\n\n\n // Append the new option to the select box\n selectBox.add(newOption);\n });\n document.getElementById( \"list_campaigns\").classList.remove(\"hidden\");\n document.getElementById( \"campaignsListLoader\").classList.add(\"hidden\");\n document.getElementById( \"campaigns_error\").classList.add(\"hidden\");\n // document.getElementById( \"push_to_response\").classList.remove(\"hidden\");\n\n } else {\n console.log(\"error\")\n document.getElementById( \"campaignsListLoader\").classList.add(\"hidden\");\n document.getElementById( \"campaigns\").classList.add(\"hidden\");\n document.getElementById( \"push_to_campaign_submit\").classList.add(\"hidden\");\n document.getElementById( \"new_campaigns\").classList.add(\"hidden\");\n document.getElementById( \"loader\" + tool + \"Campaigns\").classList.add(\"hidden\");\n document.getElementById( \"campaigns_error\").classList.remove(\"hidden\");\n document.getElementById( \"campaigns_error_message\").innerHTML = data.data;\n\n //document.getElementById( event.target.id + \"_loading\").classList.add(\"hidden\");\n //console.log(\"check_\" + event.target.id + \"_warning\")\n //document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.remove(\"hidden\");\n //document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.add(\"hidden\");\n // document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.add(\"hidden\");\n //document.getElementById(\"btnStep1Next\").classList.remove(\"hidden\");\n }\n }\n });\n }\n\n checkAndPreviewData(event){\n\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.add(\"hidden\");\n //document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.add(\"hidden\");\n document.getElementById( event.target.id + \"_loading\").classList.remove(\"hidden\");\n\n //Common\n const preview = [].slice.call(document.getElementById('preview_data').options).map(x => x.value);\n const selectedValue = event.target.value;\n\n let previewData = \"\"\n if(preview[selectedValue] != undefined){\n previewData = preview[selectedValue]\n }\n console.log(event.target.id);\n\n //Check Data\n console.log(selectedValue);\n if (selectedValue == \"\") {\n document.getElementById( event.target.id + \"_loading\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.add(\"hidden\");\n if(event.target.id == \"contact_first_name\" || event.target.id == \"contact_last_name\" || event.target.id == \"company_name\" || event.target.id == \"company_domain\"){\n //document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.remove(\"hidden\");\n document.getElementById(\"btnStep1Next\").classList.add(\"hidden\");\n }\n } else {\n\n let data = new FormData()\n data.append(\"preview_data\", previewData)\n data.append(\"mapped_field\", event.target.id)\n Rails.ajax({\n url: \"/tasks/check_preview_data\",\n type: 'POST',\n data: data,\n success: function (data) {\n if (data.success) {\n console.log(\"success\")\n document.getElementById( event.target.id + \"_loading\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.remove(\"hidden\");\n //document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.add(\"hidden\");\n document.getElementById(\"btnStep1Next\").classList.remove(\"hidden\");\n } else {\n document.getElementById( event.target.id + \"_loading\").classList.add(\"hidden\");\n console.log(\"check_\" + event.target.id + \"_warning\")\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.remove(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.add(\"hidden\");\n // document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.add(\"hidden\");\n document.getElementById(\"btnStep1Next\").classList.remove(\"hidden\");\n }\n }\n });\n }\n\n //preview\n [].slice.call(previewData.split(',')).forEach((element, index) => document.getElementById(event.target.id + \"_preview_\"+index).innerHTML = element)\n }\n\n\n\n archiveTask() {\n\n const taskID = this.element.id;\n const taskItem = \"item_task_\" + taskID;\n\n Rails.ajax({\n url: \"/tasks/\"+taskID+\"/archive\",\n type:'PUT',\n success: function(data) {\n if (data.success){\n document.getElementById(taskItem).classList.add('hidden')\n }\n }\n })\n\n }\n\n exportFile(){\n //let messageBox = this.messageBoxTarget\n let data = new FormData()\n data.append(\"deliverable\", this.deliverableTarget.checked)\n data.append(\"catch_all\", this.catchAllTarget.checked)\n data.append(\"not_found\", this.notFoundTarget.checked)\n data.append(\"format\", this.formatTarget.value)\n\n console.log( \"Format : \" + this.formatTarget.value)\n\n Rails.ajax({\n url: \"/tasks/\" + this.taskUuidTarget.id + \"/export\",\n type:'POST',\n data: data,\n success: function(data) {\n //messageBox.classList.remove('invisible')\n //let title = data.success ? \"Success\" : \"Error\"\n //document.getElementById(\"messageBoxSuccessStatus\")._x_model.set(data.success.toString())\n //document.getElementById(\"msg-title\").innerHTML = title\n //document.getElementById(\"msg-content\").innerHTML = data.message\n //setTimeout(() => { messageBox.classList.add('invisible'); }, 5000);\n\n }\n })\n }\n\n verifyScrubby(){\n let messageBox = this.messageBoxTarget\n console.log('verify')\n\n Rails.ajax({\n url: \"/tasks/\" + this.taskUuidTarget.id + \"/scrubby\",\n type:'POST',\n success: function(data) {\n messageBox.classList.remove('invisible')\n let title = data.success ? \"Success\" : \"Error\"\n document.getElementById(\"messageBoxSuccessStatus\")._x_model.set(data.success.toString())\n document.getElementById(\"msg-title\").innerHTML = title\n document.getElementById(\"msg-content\").innerHTML = data.message\n setTimeout(() => { messageBox.classList.add('invisible'); }, 5000);\n\n }\n })\n }\n\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n remove() {\n this.element.remove()\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n\n static targets = [\"messageBoxSuccess\", \"messageBoxError\",\"removedCard\"]\n\n connect() {\n }\n \n removeProvider(){\n let messageBoxSuccess = this.messageBoxSuccessTarget\n let messageBoxError = this.messageBoxErrorTarget\n let provider_id = event.srcElement.id\n console.log(provider_id)\n let data = new FormData()\n data.append(\"provider_id\", provider_id)\n\n \n let response = Rails.ajax({\n url: '/user_api_credentials/'+ provider_id,\n type:'DELETE',\n data: data, \n success: function(data) {\n console.log(data)\n if (data.success){\n //document.getElementById(\"catalog_\" + provider_id).classList.remove('hidden')\n //document.getElementById(\"sync_\" + provider_id).classList.add(\"hidden\")\n messageBoxSuccess.classList.remove('invisible')\n document.getElementById(\"msg-content-remove-success\").innerHTML = data.message\n setTimeout(() => { messageBoxSuccess.classList.add('invisible'); }, 5000);\n\n } else {\n messageBoxError.classList.remove('invisible')\n document.getElementById(\"msg-content-remove-error\").innerHTML = data.message\n setTimeout(() => { messageBoxError.classList.add('invisible'); }, 5000);\n }\n }\n })\n\n }\n\n removeProviderLegacy(){\n\n let removedCard = this.removedCardTarget\n\n let provider_id = event.srcElement.id\n let data = new FormData()\n data.append(\"provider_id\", provider_id)\n\n let response = Rails.ajax({\n url: '/user_api_credentials/1',\n type: 'DELETE',\n data: data,\n success: function (data) {\n if (data.success) {\n removedCard.classList.add('hidden')\n }\n }\n })\n\n\n }\n\n }","import {Controller} from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\n\nexport default class extends Controller {\n\n static targets = [\"messageBoxSuccess\", \"messageBoxError\"]\n\n connect() {\n }\n\n checkSnQuery() {\n let query = event.srcElement.value\n\n let messageBoxSuccess = this.messageBoxSuccessTarget\n let messageBoxError = this.messageBoxErrorTarget\n\n let data = new FormData()\n data.append(\"query\", query)\n\n let response = Rails.ajax({\n url: '/tasks/check_sn_query_gl',\n type: 'POST',\n data: data,\n success: function (data) {\n if (data.success) {\n console.log(\"success\")\n messageBoxSuccess.classList.remove('invisible')\n messageBoxError.classList.add('invisible')\n document.getElementById(\"msg-url-success\").innerHTML = data.message\n\n } else {\n messageBoxError.classList.remove('invisible')\n messageBoxSuccess.classList.add('invisible')\n document.getElementById(\"msg-url-error\").innerHTML = data.message\n }\n }\n })\n }\n\n\n}","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\nimport debounce from \"debounce\";\n\n\nexport default class extends Controller {\n\n static targets = [\"messageBox\",\"deliverable\",\"catchAll\",\"notFound\",\"taskUuid\",\"format\"]\n\n\n connect() {\n console.log(\"connected to the controller\")\n\n }\n\n singleSearchForm(event){\n console.log(\"submit\")\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.element.requestSubmit()\n }, 250)\n }\n\n checkAndPreviewData(event){\n\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.add(\"hidden\");\n //document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.add(\"hidden\");\n document.getElementById( event.target.id + \"_loading\").classList.remove(\"hidden\");\n\n //Common\n const preview = [].slice.call(document.getElementById('preview_data').options).map(x => x.value);\n const selectedValue = event.target.value;\n\n let previewData = \"\"\n if(preview[selectedValue] != undefined){\n previewData = preview[selectedValue]\n }\n console.log(event.target.id);\n\n //Check Data\n console.log(selectedValue);\n if (selectedValue == \"\") {\n document.getElementById( event.target.id + \"_loading\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.add(\"hidden\");\n if(event.target.id == \"contact_first_name\" || event.target.id == \"contact_last_name\" || event.target.id == \"company_name\" || event.target.id == \"company_domain\"){\n //document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.remove(\"hidden\");\n // document.getElementById(\"btnStep1Next\").classList.add(\"hidden\");\n }\n } else {\n\n let data = new FormData()\n data.append(\"preview_data\", previewData)\n data.append(\"mapped_field\", event.target.id)\n Rails.ajax({\n url: \"/tasks/check_preview_data\",\n type: 'POST',\n data: data,\n success: function (data) {\n if (data.success) {\n console.log(\"success\")\n document.getElementById( event.target.id + \"_loading\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.add(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.remove(\"hidden\");\n //document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.add(\"hidden\");\n //document.getElementById(\"submit_btn\").classList.remove(\"hidden\");\n } else {\n document.getElementById( event.target.id + \"_loading\").classList.add(\"hidden\");\n console.log(\"check_\" + event.target.id + \"_warning\")\n document.getElementById(\"check_field_\" + event.target.id + \"_warning\").classList.remove(\"hidden\");\n document.getElementById(\"check_field_\" + event.target.id + \"_ok\").classList.add(\"hidden\");\n // document.getElementById(\"check_field_\" + event.target.id + \"_error\").classList.add(\"hidden\");\n //document.getElementById(\"submit_btn\").classList.remove(\"hidden\");\n }\n }\n });\n }\n console.log(previewData);\n //preview\n [].slice.call(previewData.split(',')).forEach((element, index) => document.getElementById(event.target.id + \"_preview\").innerHTML = element)\n }\n\n\n\n archiveTask() {\n\n const taskID = this.element.id;\n const taskItem = \"item_task_\" + taskID;\n\n Rails.ajax({\n url: \"/tasks/\"+taskID+\"/archive\",\n type:'PUT',\n success: function(data) {\n if (data.success){\n document.getElementById(taskItem).classList.add('hidden')\n }\n }\n })\n\n }\n\n exportFile(){\n //let messageBox = this.messageBoxTarget\n let data = new FormData()\n data.append(\"deliverable\", this.deliverableTarget.checked)\n data.append(\"catch_all\", this.catchAllTarget.checked)\n data.append(\"not_found\", this.notFoundTarget.checked)\n data.append(\"format\", this.formatTarget.value)\n\n console.log( \"Format : \" + this.formatTarget.value)\n\n Rails.ajax({\n url: \"/tasks/\" + this.taskUuidTarget.id + \"/export\",\n type:'POST',\n data: data,\n success: function(data) {\n //messageBox.classList.remove('invisible')\n //let title = data.success ? \"Success\" : \"Error\"\n //document.getElementById(\"messageBoxSuccessStatus\")._x_model.set(data.success.toString())\n //document.getElementById(\"msg-title\").innerHTML = title\n //document.getElementById(\"msg-content\").innerHTML = data.message\n //setTimeout(() => { messageBox.classList.add('invisible'); }, 5000);\n\n }\n })\n }\n\n verifyScrubby(){\n let messageBox = this.messageBoxTarget\n console.log('verify')\n\n Rails.ajax({\n url: \"/tasks/\" + this.taskUuidTarget.id + \"/scrubby\",\n type:'POST',\n success: function(data) {\n messageBox.classList.remove('invisible')\n let title = data.success ? \"Success\" : \"Error\"\n document.getElementById(\"messageBoxSuccessStatus\")._x_model.set(data.success.toString())\n document.getElementById(\"msg-title\").innerHTML = title\n document.getElementById(\"msg-content\").innerHTML = data.message\n setTimeout(() => { messageBox.classList.add('invisible'); }, 5000);\n\n }\n })\n }\n\n\n}\n","import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n static targets = [\"overlay\", \"content\", \"modal\"];\n\n connect() {\n console.log(\"Modal controller connected\");\n document.body.classList.add(\"overflow-hidden\");\n }\n\n hideModal() {\n this.overlayTarget.classList.add(\"hidden\");\n document.body.classList.remove(\"overflow-hidden\");\n this.element.parentElement.removeAttribute(\"src\") // it might be nice to also remove the modal SRC\n this.element.remove()\n }\n\n // hide modal on successful form submission\n // action: \"turbo:submit-end->turbo-modal#submitEnd\"\n submitEnd(e) {\n if (e.detail.success) {\n this.hideModal()\n }\n }\n // hide modal when clicking ESC\n // action: \"keyup@window->turbo-modal#closeWithKeyboard\"\n closeWithKeyboard(e) {\n if (e.code == \"Escape\") {\n this.hideModal()\n }\n }\n // hide modal when clicking outside of modal\n // action: \"click@window->turbo-modal#closeBackground\"\n closeBackground(e) {\n if (e && this.modalTarget.contains(e.target)) {\n return\n }\n this.hideModal()\n }\n}","import { Controller } from \"@hotwired/stimulus\"\nimport Rails from \"@rails/ujs\"\nimport debounce from \"debounce\";\n\n\nexport default class extends Controller {\n static targets = [ \"name\" ]\n\n connect() {\n }\n\n removeCampaign(event) {\n const campaignID = event.currentTarget.id;\n const campaignName = event.currentTarget.dataset.campaignName;\n const removed_campaign = { name: campaignName, id: campaignID };\n console.log(\"Campaign Name:\", campaignName); // Vérifie dans la console\n\n let data = new FormData();\n data.append(\"removed_campaign\", JSON.stringify(removed_campaign));\n\n Rails.ajax({\n url: \"/insights/remove_campaign_insight_report/\",\n type: \"POST\",\n data: data,\n success: (data, status, xhr) => {\n Turbo.renderStreamMessage(xhr.responseText);\n },\n error: (err) => console.error(\"Erreur AJAX:\", err)\n });\n }\n\n sumbitInstanceForm(event) {\n console.log(\"submit UI\")\n event.preventDefault();\n this.element.closest(\"form\").requestSubmit();\n }\n\n submitCampaignForm(event) {\n console.log(\"submit campaign\")\n event.preventDefault();\n this.element.closest(\"form\").requestSubmit();\n}\n\n\n}\n","/*!\n * Chartkick.js v5.0.1\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * MIT License\n */\nfunction isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n}\n\nfunction isFunction(variable) {\n return variable instanceof Function;\n}\n\nfunction isPlainObject(variable) {\n // protect against prototype pollution, defense 2\n return Object.prototype.toString.call(variable) === \"[object Object]\" && !isFunction(variable) && variable instanceof Object;\n} // https://github.com/madrobby/zepto/blob/master/src/zepto.js\n\n\nfunction extend(target, source) {\n for (var key in source) {\n // protect against prototype pollution, defense 1\n if (key === \"__proto__\") {\n continue;\n }\n\n if (isPlainObject(source[key]) || isArray(source[key])) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) {\n target[key] = {};\n }\n\n if (isArray(source[key]) && !isArray(target[key])) {\n target[key] = [];\n }\n\n extend(target[key], source[key]);\n } else if (source[key] !== undefined) {\n target[key] = source[key];\n }\n }\n}\n\nfunction merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n}\n\nvar DATE_PATTERN = /^(\\d\\d\\d\\d)(?:-)?(\\d\\d)(?:-)?(\\d\\d)$/i;\n\nfunction negativeValues(series) {\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n\n for (var j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction toStr(obj) {\n return \"\" + obj;\n}\n\nfunction toFloat(obj) {\n return parseFloat(obj);\n}\n\nfunction toDate(obj) {\n if (obj instanceof Date) {\n return obj;\n } else if (typeof obj === \"number\") {\n return new Date(obj * 1000); // ms\n } else {\n var s = toStr(obj);\n var matches = s.match(DATE_PATTERN);\n\n if (matches) {\n var year = parseInt(matches[1], 10);\n var month = parseInt(matches[2], 10) - 1;\n var day = parseInt(matches[3], 10);\n return new Date(year, month, day);\n } else {\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = s.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\"); // Date.parse returns milliseconds if valid and NaN if invalid\n\n return new Date(Date.parse(str) || s);\n }\n }\n}\n\nfunction toArr(obj) {\n if (isArray(obj)) {\n return obj;\n } else {\n var arr = [];\n\n for (var i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n arr.push([i, obj[i]]);\n }\n }\n\n return arr;\n }\n}\n\nfunction jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle) {\n return function (chart, opts, chartOptions) {\n var series = chart.data;\n var options = merge({}, defaultOptions);\n options = merge(options, chartOptions || {});\n\n if (chart.singleSeriesFormat || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.singleSeriesFormat);\n }\n\n if (opts.title) {\n setTitle(options, opts.title);\n } // min\n\n\n if (\"min\" in opts) {\n setMin(options, opts.min);\n } else if (!negativeValues(series)) {\n setMin(options, 0);\n } // max\n\n\n if (opts.max) {\n setMax(options, opts.max);\n }\n\n if (\"stacked\" in opts) {\n setStacked(options, opts.stacked);\n }\n\n if (opts.colors) {\n options.colors = opts.colors;\n }\n\n if (opts.xtitle) {\n setXtitle(options, opts.xtitle);\n }\n\n if (opts.ytitle) {\n setYtitle(options, opts.ytitle);\n } // merge library last\n\n\n options = merge(options, opts.library || {});\n return options;\n };\n}\n\nfunction sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n}\n\nfunction sortByNumberSeries(a, b) {\n return a[0] - b[0];\n} // needed since sort() without arguments does string comparison\n\n\nfunction sortByNumber(a, b) {\n return a - b;\n}\n\nfunction every(values, fn) {\n for (var i = 0; i < values.length; i++) {\n if (!fn(values[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDay(timeUnit) {\n return timeUnit === \"day\" || timeUnit === \"week\" || timeUnit === \"month\" || timeUnit === \"year\";\n}\n\nfunction calculateTimeUnit(values, maxDay) {\n if (maxDay === void 0) maxDay = false;\n\n if (values.length === 0) {\n return null;\n }\n\n var minute = every(values, function (d) {\n return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n });\n\n if (!minute) {\n return null;\n }\n\n var hour = every(values, function (d) {\n return d.getMinutes() === 0;\n });\n\n if (!hour) {\n return \"minute\";\n }\n\n var day = every(values, function (d) {\n return d.getHours() === 0;\n });\n\n if (!day) {\n return \"hour\";\n }\n\n if (maxDay) {\n return \"day\";\n }\n\n var month = every(values, function (d) {\n return d.getDate() === 1;\n });\n\n if (!month) {\n var dayOfWeek = values[0].getDay();\n var week = every(values, function (d) {\n return d.getDay() === dayOfWeek;\n });\n return week ? \"week\" : \"day\";\n }\n\n var year = every(values, function (d) {\n return d.getMonth() === 0;\n });\n\n if (!year) {\n return \"month\";\n }\n\n return \"year\";\n}\n\nfunction isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n}\n\nfunction isNumber(obj) {\n return typeof obj === \"number\";\n}\n\nvar byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\nfunction formatValue(pre, value, options, axis) {\n pre = pre || \"\";\n\n if (options.prefix) {\n if (value < 0) {\n value = value * -1;\n pre += \"-\";\n }\n\n pre += options.prefix;\n }\n\n var suffix = options.suffix || \"\";\n var precision = options.precision;\n var round = options.round;\n\n if (options.byteScale) {\n var positive = value >= 0;\n\n if (!positive) {\n value *= -1;\n }\n\n var baseValue = axis ? options.byteScale : value;\n var suffixIdx;\n\n if (baseValue >= 1152921504606846976) {\n value /= 1152921504606846976;\n suffixIdx = 6;\n } else if (baseValue >= 1125899906842624) {\n value /= 1125899906842624;\n suffixIdx = 5;\n } else if (baseValue >= 1099511627776) {\n value /= 1099511627776;\n suffixIdx = 4;\n } else if (baseValue >= 1073741824) {\n value /= 1073741824;\n suffixIdx = 3;\n } else if (baseValue >= 1048576) {\n value /= 1048576;\n suffixIdx = 2;\n } else if (baseValue >= 1024) {\n value /= 1024;\n suffixIdx = 1;\n } else {\n suffixIdx = 0;\n } // TODO handle manual precision case\n\n\n if (precision === undefined && round === undefined) {\n if (value >= 1023.5) {\n if (suffixIdx < byteSuffixes.length - 1) {\n value = 1.0;\n suffixIdx += 1;\n }\n }\n\n precision = value >= 1000 ? 4 : 3;\n }\n\n suffix = \" \" + byteSuffixes[suffixIdx]; // flip value back\n\n if (!positive) {\n value *= -1;\n }\n }\n\n if (precision !== undefined && round !== undefined) {\n throw Error(\"Use either round or precision, not both\");\n }\n\n if (!axis) {\n if (precision !== undefined) {\n value = value.toPrecision(precision);\n\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n\n if (round !== undefined) {\n if (round < 0) {\n var num = Math.pow(10, -1 * round);\n value = parseInt((1.0 * value / num).toFixed(0)) * num;\n } else {\n value = value.toFixed(round);\n\n if (!options.zeros) {\n value = parseFloat(value);\n }\n }\n }\n }\n\n if (options.thousands || options.decimal) {\n value = toStr(value);\n var parts = value.split(\".\");\n value = parts[0];\n\n if (options.thousands) {\n value = value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, options.thousands);\n }\n\n if (parts.length > 1) {\n value += (options.decimal || \".\") + parts[1];\n }\n }\n\n return pre + value + suffix;\n}\n\nfunction seriesOption(chart, series, option) {\n if (option in series) {\n return series[option];\n } else if (option in chart.options) {\n return chart.options[option];\n }\n\n return null;\n}\n\nvar baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n plugins: {\n legend: {},\n tooltip: {\n displayColors: false,\n callbacks: {}\n },\n title: {\n font: {\n size: 20\n },\n color: \"#333\"\n }\n },\n interaction: {}\n};\nvar defaultOptions$2 = {\n scales: {\n y: {\n ticks: {\n maxTicksLimit: 4\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n grid: {}\n },\n x: {\n grid: {\n drawOnChartArea: false\n },\n title: {\n font: {\n size: 16\n },\n color: \"#333\"\n },\n time: {},\n ticks: {}\n }\n }\n}; // http://there4.io/2012/05/02/google-chart-color-list/\n\nvar defaultColors = [\"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\", \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\", \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"];\n\nfunction hideLegend$2(options, legend, hideLegend) {\n if (legend !== undefined) {\n options.plugins.legend.display = !!legend;\n\n if (legend && legend !== true) {\n options.plugins.legend.position = legend;\n }\n } else if (hideLegend) {\n options.plugins.legend.display = false;\n }\n}\n\nfunction setTitle$2(options, title) {\n options.plugins.title.display = true;\n options.plugins.title.text = title;\n}\n\nfunction setMin$2(options, min) {\n if (min !== null) {\n options.scales.y.min = toFloat(min);\n }\n}\n\nfunction setMax$2(options, max) {\n options.scales.y.max = toFloat(max);\n}\n\nfunction setBarMin$1(options, min) {\n if (min !== null) {\n options.scales.x.min = toFloat(min);\n }\n}\n\nfunction setBarMax$1(options, max) {\n options.scales.x.max = toFloat(max);\n}\n\nfunction setStacked$2(options, stacked) {\n options.scales.x.stacked = !!stacked;\n options.scales.y.stacked = !!stacked;\n}\n\nfunction setXtitle$2(options, title) {\n options.scales.x.title.display = true;\n options.scales.x.title.text = title;\n}\n\nfunction setYtitle$2(options, title) {\n options.scales.y.title.display = true;\n options.scales.y.title.text = title;\n} // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n\n\nfunction addOpacity(hex, opacity) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? \"rgba(\" + parseInt(result[1], 16) + \", \" + parseInt(result[2], 16) + \", \" + parseInt(result[3], 16) + \", \" + opacity + \")\" : hex;\n}\n\nfunction notnull(x) {\n return x !== null && x !== undefined;\n}\n\nfunction setLabelSize(chart, data, options) {\n var maxLabelSize = Math.ceil(chart.element.offsetWidth / 4.0 / data.labels.length);\n\n if (maxLabelSize > 25) {\n maxLabelSize = 25;\n } else if (maxLabelSize < 10) {\n maxLabelSize = 10;\n }\n\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n value = toStr(this.getLabelForValue(value));\n\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n}\n\nfunction calculateScale(series) {\n var scale = 1;\n var max = maxAbsY(series);\n\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n }\n\n return scale;\n}\n\nfunction setFormatOptions$1(chart, options, chartType) {\n // options to apply to x and r values for scatter and bubble\n var numericOptions = {\n thousands: chart.options.thousands,\n decimal: chart.options.decimal\n }; // options to apply to y value\n\n var formatOptions = merge({\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n }, numericOptions);\n\n if (chart.options.bytes) {\n var series = chart.data;\n\n if (chartType === \"pie\") {\n series = [{\n data: series\n }];\n } // set step size\n\n\n formatOptions.byteScale = calculateScale(series);\n }\n\n if (chartType !== \"pie\") {\n var axis = options.scales.y;\n\n if (chartType === \"bar\") {\n axis = options.scales.x;\n }\n\n if (formatOptions.byteScale) {\n if (!axis.ticks.stepSize) {\n axis.ticks.stepSize = formatOptions.byteScale / 2;\n }\n\n if (!axis.ticks.maxTicksLimit) {\n axis.ticks.maxTicksLimit = 4;\n }\n }\n\n if (!axis.ticks.callback) {\n axis.ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n\n if ((chartType === \"scatter\" || chartType === \"bubble\") && !options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n return formatValue(\"\", value, numericOptions, true);\n };\n }\n }\n\n if (!options.plugins.tooltip.callbacks.label) {\n if (chartType === \"scatter\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n\n var dataPoint = context.parsed;\n return label + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ')';\n };\n } else if (chartType === \"bubble\") {\n options.plugins.tooltip.callbacks.label = function (context) {\n var label = context.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n\n var dataPoint = context.raw;\n return label + '(' + formatValue('', dataPoint.x, numericOptions) + ', ' + formatValue('', dataPoint.y, formatOptions) + ', ' + formatValue('', dataPoint.v, numericOptions) + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.plugins.tooltip.callbacks.label = function (context) {\n return formatValue('', context.parsed, formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"x\" : \"y\";\n\n options.plugins.tooltip.callbacks.label = function (context) {\n // don't show null values for stacked charts\n if (context.parsed[valueLabel] === null) {\n return;\n }\n\n var label = context.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n\n return formatValue(label, context.parsed[valueLabel], formatOptions);\n };\n }\n } // avoid formatting x-axis labels\n // by default, Chart.js applies locale\n\n\n if ((chartType === \"line\" || chartType === \"area\") && chart.xtype === \"number\") {\n if (!options.scales.x.ticks.callback) {\n options.scales.x.ticks.callback = function (value) {\n return toStr(value);\n };\n }\n\n if (!options.plugins.tooltip.callbacks.title) {\n options.plugins.tooltip.callbacks.title = function (context) {\n return toStr(context[0].parsed.x);\n };\n }\n }\n}\n\nfunction maxAbsY(series) {\n var max = 0;\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n\n for (var j = 0; j < data.length; j++) {\n var v = Math.abs(data[j][1]);\n\n if (v > max) {\n max = v;\n }\n }\n }\n\n return max;\n}\n\nfunction maxR(series) {\n // start at zero since radius must be positive\n var max = 0;\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n\n for (var j = 0; j < data.length; j++) {\n var v = data[j][2];\n\n if (v > max) {\n max = v;\n }\n }\n }\n\n return max;\n}\n\nvar jsOptions$2 = jsOptionsFunc(merge(baseOptions, defaultOptions$2), hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\nfunction prepareDefaultData(chart) {\n var series = chart.data;\n var rows = {};\n var keys = [];\n var labels = [];\n var values = [];\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n\n for (var j = 0; j < data.length; j++) {\n var d = data[j];\n var key = chart.xtype === \"datetime\" ? d[0].getTime() : d[0];\n\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n keys.push(key);\n }\n\n rows[key][i] = d[1];\n }\n }\n\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n keys.sort(sortByNumber);\n }\n\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n values.push([]);\n }\n\n for (var i$2 = 0; i$2 < keys.length; i$2++) {\n var key$1 = keys[i$2];\n var label = chart.xtype === \"datetime\" ? new Date(key$1) : key$1;\n labels.push(label);\n var row = rows[key$1];\n\n for (var j$1 = 0; j$1 < series.length; j$1++) {\n var v = row[j$1]; // Chart.js doesn't like undefined\n\n values[j$1].push(v === undefined ? null : v);\n }\n }\n\n return {\n labels: labels,\n values: values\n };\n}\n\nfunction prepareBubbleData(chart) {\n var series = chart.data;\n var values = [];\n var max = maxR(series);\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n var points = [];\n\n for (var j = 0; j < data.length; j++) {\n var v = data[j];\n points.push({\n x: v[0],\n y: v[1],\n r: v[2] * 20 / max,\n // custom attribute, for tooltip\n v: v[2]\n });\n }\n\n values.push(points);\n }\n\n return {\n labels: [],\n values: values\n };\n} // scatter or numeric line/area\n\n\nfunction prepareNumberData(chart) {\n var series = chart.data;\n var values = [];\n\n for (var i = 0; i < series.length; i++) {\n var data = series[i].data;\n data.sort(sortByNumberSeries);\n var points = [];\n\n for (var j = 0; j < data.length; j++) {\n var v = data[j];\n points.push({\n x: v[0],\n y: v[1]\n });\n }\n\n values.push(points);\n }\n\n return {\n labels: [],\n values: values\n };\n}\n\nfunction prepareData(chart, chartType) {\n if (chartType === \"bubble\") {\n return prepareBubbleData(chart);\n } else if (chart.xtype === \"number\" && chartType !== \"bar\" && chartType !== \"column\") {\n return prepareNumberData(chart);\n } else {\n return prepareDefaultData(chart);\n }\n}\n\nfunction createDataTable(chart, options, chartType) {\n var ref = prepareData(chart, chartType);\n var labels = ref.labels;\n var values = ref.values;\n var series = chart.data;\n var datasets = [];\n var colors = chart.options.colors || defaultColors;\n\n for (var i = 0; i < series.length; i++) {\n var s = series[i]; // use colors for each bar for single series format\n\n var color = void 0;\n var backgroundColor = void 0;\n\n if (chart.options.colors && chart.singleSeriesFormat && (chartType === \"bar\" || chartType === \"column\") && !s.color && isArray(chart.options.colors) && !isArray(chart.options.colors[0])) {\n color = colors;\n backgroundColor = [];\n\n for (var j = 0; j < colors.length; j++) {\n backgroundColor[j] = addOpacity(color[j], 0.5);\n }\n } else {\n color = s.color || colors[i];\n backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n }\n\n var dataset = {\n label: s.name || \"\",\n data: values[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n borderWidth: 2\n };\n var pointChart = chartType === \"line\" || chartType === \"area\" || chartType === \"scatter\" || chartType === \"bubble\";\n\n if (pointChart) {\n dataset.pointBackgroundColor = color;\n dataset.pointHoverBackgroundColor = color;\n dataset.pointHitRadius = 50;\n }\n\n if (chartType === \"bubble\") {\n dataset.pointBackgroundColor = backgroundColor;\n dataset.pointHoverBackgroundColor = backgroundColor;\n dataset.pointHoverBorderWidth = 2;\n }\n\n if (s.stack) {\n dataset.stack = s.stack;\n }\n\n var curve = seriesOption(chart, s, \"curve\");\n\n if (curve === false) {\n dataset.tension = 0;\n } else if (pointChart) {\n dataset.tension = 0.4;\n }\n\n var points = seriesOption(chart, s, \"points\");\n\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHoverRadius = 0;\n }\n\n dataset = merge(dataset, chart.options.dataset || {});\n dataset = merge(dataset, s.library || {});\n dataset = merge(dataset, s.dataset || {});\n datasets.push(dataset);\n }\n\n var xmin = chart.options.xmin;\n var xmax = chart.options.xmax;\n\n if (chart.xtype === \"datetime\") {\n if (notnull(xmin)) {\n options.scales.x.min = toDate(xmin).getTime();\n }\n\n if (notnull(xmax)) {\n options.scales.x.max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.x.min = xmin;\n }\n\n if (notnull(xmax)) {\n options.scales.x.max = xmax;\n }\n }\n\n if (chart.xtype === \"datetime\") {\n var timeUnit = calculateTimeUnit(labels); // for empty datetime chart\n\n if (labels.length === 0) {\n if (notnull(xmin)) {\n labels.push(toDate(xmin));\n }\n\n if (notnull(xmax)) {\n labels.push(toDate(xmax));\n }\n }\n\n if (labels.length > 0) {\n var minTime = (notnull(xmin) ? toDate(xmin) : labels[0]).getTime();\n var maxTime = (notnull(xmax) ? toDate(xmax) : labels[0]).getTime();\n\n for (var i$1 = 1; i$1 < labels.length; i$1++) {\n var value = labels[i$1].getTime();\n\n if (value < minTime) {\n minTime = value;\n }\n\n if (value > maxTime) {\n maxTime = value;\n }\n }\n\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n if (!options.scales.x.time.unit) {\n var step;\n\n if (timeUnit === \"year\" || timeDiff > 365 * 10) {\n options.scales.x.time.unit = \"year\";\n step = 365;\n } else if (timeUnit === \"month\" || timeDiff > 30 * 10) {\n options.scales.x.time.unit = \"month\";\n step = 30;\n } else if (timeUnit === \"week\" || timeUnit === \"day\" || timeDiff > 10) {\n options.scales.x.time.unit = \"day\";\n step = 1;\n } else if (timeUnit === \"hour\" || timeDiff > 0.5) {\n options.scales.x.time.displayFormats = {\n hour: \"MMM d, h a\"\n };\n options.scales.x.time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (timeUnit === \"minute\") {\n options.scales.x.time.displayFormats = {\n minute: \"h:mm a\"\n };\n options.scales.x.time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n\n if (step && timeDiff > 0) {\n // width not available for hidden elements\n var width = chart.element.offsetWidth;\n\n if (width > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (width / 100.0));\n\n if (timeUnit === \"week\" && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n\n options.scales.x.ticks.stepSize = unitStepSize;\n }\n }\n }\n\n if (!options.scales.x.time.tooltipFormat) {\n if (timeUnit === \"year\") {\n options.scales.x.time.tooltipFormat = \"yyyy\";\n } else if (timeUnit === \"month\") {\n options.scales.x.time.tooltipFormat = \"MMM yyyy\";\n } else if (timeUnit === \"week\" || timeUnit === \"day\") {\n options.scales.x.time.tooltipFormat = \"PP\";\n } else if (timeUnit === \"hour\") {\n options.scales.x.time.tooltipFormat = \"MMM d, h a\";\n } else if (timeUnit === \"minute\") {\n options.scales.x.time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n }\n\n return {\n labels: labels,\n datasets: datasets\n };\n}\n\nvar defaultExport$2 = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n};\n\ndefaultExport$2.prototype.renderLineChart = function renderLineChart(chart, chartType) {\n if (!chartType) {\n chartType = \"line\";\n }\n\n var chartOptions = {};\n var options = jsOptions$2(chart, merge(chartOptions, chart.options));\n setFormatOptions$1(chart, options, chartType);\n var data = createDataTable(chart, options, chartType);\n\n if (chart.xtype === \"number\") {\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\";\n } else {\n options.scales.x.type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n\n this.drawChart(chart, \"line\", data, options);\n};\n\ndefaultExport$2.prototype.renderPieChart = function renderPieChart(chart) {\n var options = merge({}, baseOptions);\n\n if (chart.options.donut) {\n options.cutout = \"50%\";\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$2(options, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$2(options, chart.options.title);\n }\n\n options = merge(options, chart.options.library || {});\n setFormatOptions$1(chart, options, \"pie\");\n var labels = [];\n var values = [];\n\n for (var i = 0; i < chart.data.length; i++) {\n var point = chart.data[i];\n labels.push(point[0]);\n values.push(point[1]);\n }\n\n var dataset = {\n data: values,\n backgroundColor: chart.options.colors || defaultColors\n };\n dataset = merge(dataset, chart.options.dataset || {});\n var data = {\n labels: labels,\n datasets: [dataset]\n };\n this.drawChart(chart, \"pie\", data, options);\n};\n\ndefaultExport$2.prototype.renderColumnChart = function renderColumnChart(chart, chartType) {\n var options;\n\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions$2);\n barOptions.indexAxis = \"y\"; // ensure gridlines have proper orientation\n\n barOptions.scales.x.grid.drawOnChartArea = true;\n barOptions.scales.y.grid.drawOnChartArea = false;\n delete barOptions.scales.y.ticks.maxTicksLimit;\n options = jsOptionsFunc(barOptions, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options);\n } else {\n options = jsOptions$2(chart, chart.options);\n }\n\n setFormatOptions$1(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\");\n\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"index\";\n }\n\n this.drawChart(chart, \"bar\", data, options);\n};\n\ndefaultExport$2.prototype.renderAreaChart = function renderAreaChart(chart) {\n this.renderLineChart(chart, \"area\");\n};\n\ndefaultExport$2.prototype.renderBarChart = function renderBarChart(chart) {\n this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$2.prototype.renderScatterChart = function renderScatterChart(chart, chartType) {\n chartType = chartType || \"scatter\";\n var options = jsOptions$2(chart, chart.options);\n setFormatOptions$1(chart, options, chartType);\n\n if (!(\"showLine\" in options)) {\n options.showLine = false;\n }\n\n var data = createDataTable(chart, options, chartType);\n options.scales.x.type = options.scales.x.type || \"linear\";\n options.scales.x.position = options.scales.x.position || \"bottom\"; // prevent grouping hover and tooltips\n\n if (!(\"mode\" in options.interaction)) {\n options.interaction.mode = \"nearest\";\n }\n\n this.drawChart(chart, chartType, data, options);\n};\n\ndefaultExport$2.prototype.renderBubbleChart = function renderBubbleChart(chart) {\n this.renderScatterChart(chart, \"bubble\");\n};\n\ndefaultExport$2.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n};\n\ndefaultExport$2.prototype.drawChart = function drawChart(chart, type, data, options) {\n this.destroy(chart);\n\n if (chart.destroyed) {\n return;\n }\n\n var chartOptions = {\n type: type,\n data: data,\n options: options\n };\n\n if (chart.options.code) {\n window.console.log(\"new Chart(ctx, \" + JSON.stringify(chartOptions) + \");\");\n }\n\n chart.element.innerHTML = \"\";\n var ctx = chart.element.getElementsByTagName(\"CANVAS\")[0];\n chart.chart = new this.library(ctx, chartOptions);\n};\n\nvar defaultOptions$1 = {\n chart: {},\n xAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n yAxis: {\n title: {\n text: null\n },\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n },\n title: {\n text: null\n },\n credits: {\n enabled: false\n },\n legend: {\n borderWidth: 0\n },\n tooltip: {\n style: {\n fontSize: \"12px\"\n }\n },\n plotOptions: {\n areaspline: {},\n area: {},\n series: {\n marker: {}\n }\n },\n time: {\n useUTC: false\n }\n};\n\nfunction hideLegend$1(options, legend, hideLegend) {\n if (legend !== undefined) {\n options.legend.enabled = !!legend;\n\n if (legend && legend !== true) {\n if (legend === \"top\" || legend === \"bottom\") {\n options.legend.verticalAlign = legend;\n } else {\n options.legend.layout = \"vertical\";\n options.legend.verticalAlign = \"middle\";\n options.legend.align = legend;\n }\n }\n } else if (hideLegend) {\n options.legend.enabled = false;\n }\n}\n\nfunction setTitle$1(options, title) {\n options.title.text = title;\n}\n\nfunction setMin$1(options, min) {\n options.yAxis.min = min;\n}\n\nfunction setMax$1(options, max) {\n options.yAxis.max = max;\n}\n\nfunction setStacked$1(options, stacked) {\n var stackedValue = stacked ? stacked === true ? \"normal\" : stacked : null;\n options.plotOptions.series.stacking = stackedValue;\n options.plotOptions.area.stacking = stackedValue;\n options.plotOptions.areaspline.stacking = stackedValue;\n}\n\nfunction setXtitle$1(options, title) {\n options.xAxis.title.text = title;\n}\n\nfunction setYtitle$1(options, title) {\n options.yAxis.title.text = title;\n}\n\nvar jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\nfunction setFormatOptions(chart, options, chartType) {\n var formatOptions = {\n prefix: chart.options.prefix,\n suffix: chart.options.suffix,\n thousands: chart.options.thousands,\n decimal: chart.options.decimal,\n precision: chart.options.precision,\n round: chart.options.round,\n zeros: chart.options.zeros\n }; // skip when axis is an array (like with min/max)\n\n if (chartType !== \"pie\" && !isArray(options.yAxis) && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n\n if (!options.tooltip.pointFormatter && !options.tooltip.pointFormat) {\n options.tooltip.pointFormatter = function () {\n return '\\u25CF \" + formatValue(this.series.name + ': ', this.y, formatOptions) + '
';\n };\n }\n}\n\nvar defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n};\n\ndefaultExport$1.prototype.renderLineChart = function renderLineChart(chart, chartType) {\n chartType = chartType || \"spline\";\n var chartOptions = {};\n\n if (chartType === \"areaspline\") {\n chartOptions = {\n plotOptions: {\n areaspline: {\n stacking: \"normal\"\n },\n area: {\n stacking: \"normal\"\n },\n series: {\n marker: {\n enabled: false\n }\n }\n }\n };\n }\n\n if (chart.options.curve === false) {\n if (chartType === \"areaspline\") {\n chartType = \"area\";\n } else if (chartType === \"spline\") {\n chartType = \"line\";\n }\n }\n\n var options = jsOptions$1(chart, chart.options, chartOptions);\n\n if (chart.xtype === \"number\") {\n options.xAxis.type = options.xAxis.type || \"linear\";\n } else {\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : \"datetime\";\n }\n\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n\n setFormatOptions(chart, options, chartType);\n var series = chart.data;\n\n for (var i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n var data = series[i].data;\n\n if (chart.xtype === \"datetime\") {\n for (var j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\n } else if (chart.xtype === \"number\") {\n data.sort(sortByNumberSeries);\n }\n\n series[i].marker = {\n symbol: \"circle\"\n };\n\n if (chart.options.points === false) {\n series[i].marker.enabled = false;\n }\n }\n\n this.drawChart(chart, series, options);\n};\n\ndefaultExport$1.prototype.renderScatterChart = function renderScatterChart(chart) {\n var options = jsOptions$1(chart, chart.options, {});\n options.chart.type = \"scatter\";\n this.drawChart(chart, chart.data, options);\n};\n\ndefaultExport$1.prototype.renderPieChart = function renderPieChart(chart) {\n var chartOptions = merge(defaultOptions$1, {});\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n\n if (chart.options.donut) {\n chartOptions.plotOptions = {\n pie: {\n innerSize: \"50%\"\n }\n };\n }\n\n if (\"legend\" in chart.options) {\n hideLegend$1(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$1(chartOptions, chart.options.title);\n }\n\n var options = merge(chartOptions, chart.options.library || {});\n setFormatOptions(chart, options, \"pie\");\n var series = [{\n type: \"pie\",\n name: chart.options.label || \"Value\",\n data: chart.data\n }];\n this.drawChart(chart, series, options);\n};\n\ndefaultExport$1.prototype.renderColumnChart = function renderColumnChart(chart, chartType) {\n chartType = chartType || \"column\";\n var series = chart.data;\n var options = jsOptions$1(chart, chart.options);\n var rows = [];\n var categories = [];\n options.chart.type = chartType;\n setFormatOptions(chart, options, chartType);\n\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n\n for (var j = 0; j < s.data.length; j++) {\n var d = s.data[j];\n\n if (!rows[d[0]]) {\n rows[d[0]] = new Array(series.length);\n categories.push(d[0]);\n }\n\n rows[d[0]][i] = d[1];\n }\n }\n\n if (chart.xtype === \"number\") {\n categories.sort(sortByNumber);\n }\n\n options.xAxis.categories = categories;\n var newSeries = [];\n\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var d$1 = [];\n\n for (var j$1 = 0; j$1 < categories.length; j$1++) {\n d$1.push(rows[categories[j$1]][i$1] || 0);\n }\n\n var d2 = {\n name: series[i$1].name || \"Value\",\n data: d$1\n };\n\n if (series[i$1].stack) {\n d2.stack = series[i$1].stack;\n }\n\n newSeries.push(d2);\n }\n\n this.drawChart(chart, newSeries, options);\n};\n\ndefaultExport$1.prototype.renderBarChart = function renderBarChart(chart) {\n this.renderColumnChart(chart, \"bar\");\n};\n\ndefaultExport$1.prototype.renderAreaChart = function renderAreaChart(chart) {\n this.renderLineChart(chart, \"areaspline\");\n};\n\ndefaultExport$1.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n};\n\ndefaultExport$1.prototype.drawChart = function drawChart(chart, data, options) {\n this.destroy(chart);\n\n if (chart.destroyed) {\n return;\n }\n\n options.chart.renderTo = chart.element.id;\n options.series = data;\n\n if (chart.options.code) {\n window.console.log(\"new Highcharts.Chart(\" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.Chart(options);\n};\n\nvar loaded = {};\nvar callbacks = []; // Set chart options\n\nvar defaultOptions = {\n chartArea: {},\n fontName: \"'Lucida Grande', 'Lucida Sans Unicode', Verdana, Arial, Helvetica, sans-serif\",\n pointSize: 6,\n legend: {\n textStyle: {\n fontSize: 12,\n color: \"#444\"\n },\n alignment: \"center\",\n position: \"right\"\n },\n curveType: \"function\",\n hAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n gridlines: {\n color: \"transparent\"\n },\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n vAxis: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n },\n titleTextStyle: {},\n baselineColor: \"#ccc\",\n viewWindow: {}\n },\n tooltip: {\n textStyle: {\n color: \"#666\",\n fontSize: 12\n }\n }\n};\n\nfunction hideLegend(options, legend, hideLegend) {\n if (legend !== undefined) {\n var position;\n\n if (!legend) {\n position = \"none\";\n } else if (legend === true) {\n position = \"right\";\n } else {\n position = legend;\n }\n\n options.legend.position = position;\n } else if (hideLegend) {\n options.legend.position = \"none\";\n }\n}\n\nfunction setTitle(options, title) {\n options.title = title;\n options.titleTextStyle = {\n color: \"#333\",\n fontSize: \"20px\"\n };\n}\n\nfunction setMin(options, min) {\n options.vAxis.viewWindow.min = min;\n}\n\nfunction setMax(options, max) {\n options.vAxis.viewWindow.max = max;\n}\n\nfunction setBarMin(options, min) {\n options.hAxis.viewWindow.min = min;\n}\n\nfunction setBarMax(options, max) {\n options.hAxis.viewWindow.max = max;\n}\n\nfunction setStacked(options, stacked) {\n options.isStacked = stacked || false;\n}\n\nfunction setXtitle(options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n}\n\nfunction setYtitle(options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n}\n\nvar jsOptions = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\nfunction resize(callback) {\n if (window.attachEvent) {\n window.attachEvent(\"onresize\", callback);\n } else if (window.addEventListener) {\n window.addEventListener(\"resize\", callback, true);\n }\n\n callback();\n}\n\nvar defaultExport = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n};\n\ndefaultExport.prototype.renderLineChart = function renderLineChart(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n\n if (chart.options.curve === false) {\n chartOptions.curveType = \"none\";\n }\n\n if (chart.options.points === false) {\n chartOptions.pointSize = 0;\n }\n\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n this$1$1.drawChart(chart, \"LineChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderPieChart = function renderPieChart(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n chartArea: {\n top: \"10%\",\n height: \"80%\"\n },\n legend: {}\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n\n if (chart.options.donut) {\n chartOptions.pieHole = 0.5;\n }\n\n if (\"legend\" in chart.options) {\n hideLegend(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle(chartOptions, chart.options.title);\n }\n\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n this$1$1.drawChart(chart, \"PieChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderColumnChart = function renderColumnChart(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, function () {\n var options = jsOptions(chart, chart.options);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n this$1$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderBarChart = function renderBarChart(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n hAxis: {\n gridlines: {\n color: \"#ccc\"\n }\n }\n };\n var options = jsOptionsFunc(defaultOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n this$1$1.drawChart(chart, \"BarChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderAreaChart = function renderAreaChart(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {\n isStacked: true,\n pointSize: 0,\n areaOpacity: 0.5\n };\n var options = jsOptions(chart, chart.options, chartOptions);\n var data = this$1$1.createDataTable(chart.data, chart.xtype);\n this$1$1.drawChart(chart, \"AreaChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderGeoChart = function renderGeoChart(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, \"geochart\", function () {\n var chartOptions = {\n legend: \"none\",\n colorAxis: {\n colors: chart.options.colors || [\"#f6c7b6\", \"#ce502d\"]\n }\n };\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n this$1$1.drawChart(chart, \"GeoChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderScatterChart = function renderScatterChart(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions(chart, chart.options, chartOptions);\n var series = chart.data;\n var rows2 = [];\n\n for (var i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n var d = series[i].data;\n\n for (var j = 0; j < d.length; j++) {\n var row = new Array(series.length + 1);\n row[0] = d[j][0];\n row[i + 1] = d[j][1];\n rows2.push(row);\n }\n }\n\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n data.addColumn(\"number\", series[i$1].name);\n }\n\n data.addRows(rows2);\n this$1$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n};\n\ndefaultExport.prototype.renderTimeline = function renderTimeline(chart) {\n var this$1$1 = this;\n this.waitForLoaded(chart, \"timeline\", function () {\n var chartOptions = {\n legend: \"none\"\n };\n\n if (chart.options.colors) {\n chartOptions.colors = chart.options.colors;\n }\n\n var options = merge(merge(defaultOptions, chartOptions), chart.options.library || {});\n var data = new this$1$1.library.visualization.DataTable();\n data.addColumn({\n type: \"string\",\n id: \"Name\"\n });\n data.addColumn({\n type: \"date\",\n id: \"Start\"\n });\n data.addColumn({\n type: \"date\",\n id: \"End\"\n });\n data.addRows(chart.data);\n chart.element.style.lineHeight = \"normal\";\n this$1$1.drawChart(chart, \"Timeline\", data, options);\n });\n}; // TODO remove resize events\n\n\ndefaultExport.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n};\n\ndefaultExport.prototype.drawChart = function drawChart(chart, type, data, options) {\n this.destroy(chart);\n\n if (chart.destroyed) {\n return;\n }\n\n if (chart.options.code) {\n window.console.log(\"var data = new google.visualization.DataTable(\" + data.toJSON() + \");\\nvar chart = new google.visualization.\" + type + \"(element);\\nchart.draw(data, \" + JSON.stringify(options) + \");\");\n }\n\n chart.chart = new this.library.visualization[type](chart.element);\n resize(function () {\n chart.chart.draw(data, options);\n });\n};\n\ndefaultExport.prototype.waitForLoaded = function waitForLoaded(chart, pack, callback) {\n var this$1$1 = this;\n\n if (!callback) {\n callback = pack;\n pack = \"corechart\";\n }\n\n callbacks.push({\n pack: pack,\n callback: callback\n });\n\n if (loaded[pack]) {\n this.runCallbacks();\n } else {\n loaded[pack] = true; // https://groups.google.com/forum/#!topic/google-visualization-api/fMKJcyA2yyI\n\n var loadOptions = {\n packages: [pack],\n callback: function callback() {\n this$1$1.runCallbacks();\n }\n };\n\n var config = chart.__config();\n\n if (config.language) {\n loadOptions.language = config.language;\n }\n\n if (pack === \"geochart\" && config.mapsApiKey) {\n loadOptions.mapsApiKey = config.mapsApiKey;\n }\n\n this.library.charts.load(\"current\", loadOptions);\n }\n};\n\ndefaultExport.prototype.runCallbacks = function runCallbacks() {\n for (var i = 0; i < callbacks.length; i++) {\n var cb = callbacks[i];\n var call = this.library.visualization && (cb.pack === \"corechart\" && this.library.visualization.LineChart || cb.pack === \"timeline\" && this.library.visualization.Timeline || cb.pack === \"geochart\" && this.library.visualization.GeoChart);\n\n if (call) {\n cb.callback();\n callbacks.splice(i, 1);\n i--;\n }\n }\n}; // cant use object as key\n\n\ndefaultExport.prototype.createDataTable = function createDataTable(series, columnType) {\n var rows = [];\n var sortedLabels = [];\n\n for (var i = 0; i < series.length; i++) {\n var s = series[i];\n series[i].name = series[i].name || \"Value\";\n\n for (var j = 0; j < s.data.length; j++) {\n var d = s.data[j];\n var key = columnType === \"datetime\" ? d[0].getTime() : d[0];\n\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n sortedLabels.push(key);\n }\n\n rows[key][i] = d[1];\n }\n }\n\n var rows2 = [];\n var values = [];\n\n for (var j$1 = 0; j$1 < sortedLabels.length; j$1++) {\n var i$1 = sortedLabels[j$1];\n var value = void 0;\n\n if (columnType === \"datetime\") {\n value = new Date(i$1);\n values.push(value);\n } else {\n value = i$1;\n }\n\n rows2.push([value].concat(rows[i$1]));\n }\n\n var day = true;\n\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n var timeUnit = calculateTimeUnit(values, true);\n day = isDay(timeUnit);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n\n for (var i$2 = 0; i$2 < rows2.length; i$2++) {\n rows2[i$2][0] = toStr(rows2[i$2][0]);\n }\n\n columnType = \"string\";\n } // create datatable\n\n\n var data = new this.library.visualization.DataTable();\n columnType = columnType === \"datetime\" && day ? \"date\" : columnType;\n data.addColumn(columnType, \"\");\n\n for (var i$3 = 0; i$3 < series.length; i$3++) {\n data.addColumn(\"number\", series[i$3].name);\n }\n\n data.addRows(rows2);\n return data;\n};\n\nvar adapters = [];\n\nfunction getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport;\n } else if (isFunction(library)) {\n return defaultExport$2;\n }\n }\n\n throw new Error(\"Unknown adapter\");\n}\n\nfunction addAdapter(library) {\n var adapterType = getAdapterType(library);\n\n for (var i = 0; i < adapters.length; i++) {\n if (adapters[i].library === library) {\n return;\n }\n }\n\n adapters.push(new adapterType(library));\n}\n\nfunction loadAdapters() {\n if (\"Chart\" in window) {\n addAdapter(window.Chart);\n }\n\n if (\"Highcharts\" in window) {\n addAdapter(window.Highcharts);\n }\n\n if (window.google && window.google.charts) {\n addAdapter(window.google);\n }\n} // TODO remove chartType if cross-browser way\n// to get the name of the chart class\n\n\nfunction callAdapter(chartType, chart) {\n var fnName = \"render\" + chartType;\n var adapterName = chart.options.adapter;\n loadAdapters();\n\n for (var i = 0; i < adapters.length; i++) {\n var adapter = adapters[i];\n\n if ((!adapterName || adapterName === adapter.name) && isFunction(adapter[fnName])) {\n chart.adapter = adapter.name;\n chart.__adapterObject = adapter;\n return adapter[fnName](chart);\n }\n }\n\n if (adapters.length > 0) {\n throw new Error(\"No charting library found for \" + chartType);\n } else {\n throw new Error(\"No charting libraries found - be sure to include one before your charts\");\n }\n}\n\nvar Chartkick = {\n charts: {},\n configure: function configure(options) {\n for (var key in options) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n Chartkick.config[key] = options[key];\n }\n }\n },\n setDefaultOptions: function setDefaultOptions(opts) {\n Chartkick.options = opts;\n },\n eachChart: function eachChart(callback) {\n for (var chartId in Chartkick.charts) {\n if (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n destroyAll: function destroyAll() {\n for (var chartId in Chartkick.charts) {\n if (Object.prototype.hasOwnProperty.call(Chartkick.charts, chartId)) {\n Chartkick.charts[chartId].destroy();\n delete Chartkick.charts[chartId];\n }\n }\n },\n config: {},\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function use(adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n};\n\nfunction formatSeriesBubble(data) {\n var r = [];\n\n for (var i = 0; i < data.length; i++) {\n r.push([toFloat(data[i][0]), toFloat(data[i][1]), toFloat(data[i][2])]);\n }\n\n return r;\n} // casts data to proper type\n// sorting is left to adapters\n\n\nfunction formatSeriesData(data, keyType) {\n if (keyType === \"bubble\") {\n return formatSeriesBubble(data);\n }\n\n var keyFunc;\n\n if (keyType === \"number\") {\n keyFunc = toFloat;\n } else if (keyType === \"datetime\") {\n keyFunc = toDate;\n } else {\n keyFunc = toStr;\n }\n\n var r = [];\n\n for (var i = 0; i < data.length; i++) {\n r.push([keyFunc(data[i][0]), toFloat(data[i][1])]);\n }\n\n return r;\n}\n\nfunction detectXType(series, noDatetime, options) {\n if (dataEmpty(series)) {\n if ((options.xmin || options.xmax) && (!options.xmin || isDate(options.xmin)) && (!options.xmax || isDate(options.xmax))) {\n return \"datetime\";\n } else {\n return \"number\";\n }\n } else if (detectXTypeWithFunction(series, isNumber)) {\n return \"number\";\n } else if (!noDatetime && detectXTypeWithFunction(series, isDate)) {\n return \"datetime\";\n } else {\n return \"string\";\n }\n}\n\nfunction detectXTypeWithFunction(series, func) {\n for (var i = 0; i < series.length; i++) {\n var data = toArr(series[i].data);\n\n for (var j = 0; j < data.length; j++) {\n if (!func(data[j][0])) {\n return false;\n }\n }\n }\n\n return true;\n} // creates a shallow copy of each element of the array\n// elements are expected to be objects\n\n\nfunction copySeries(series) {\n var newSeries = [];\n\n for (var i = 0; i < series.length; i++) {\n var copy = {};\n\n for (var j in series[i]) {\n if (Object.prototype.hasOwnProperty.call(series[i], j)) {\n copy[j] = series[i][j];\n }\n }\n\n newSeries.push(copy);\n }\n\n return newSeries;\n}\n\nfunction processSeries(chart, keyType, noDatetime) {\n var opts = chart.options;\n var series = chart.rawData; // see if one series or multiple\n\n chart.singleSeriesFormat = !isArray(series) || !isPlainObject(series[0]);\n\n if (chart.singleSeriesFormat) {\n series = [{\n name: opts.label,\n data: series\n }];\n } // convert to array\n // must come before dataEmpty check\n\n\n series = copySeries(series);\n\n for (var i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n\n chart.xtype = keyType || (opts.discrete ? \"string\" : detectXType(series, noDatetime, opts)); // right format\n\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n series[i$1].data = formatSeriesData(series[i$1].data, chart.xtype);\n }\n\n return series;\n}\n\nfunction processSimple(chart) {\n var perfectData = toArr(chart.rawData);\n\n for (var i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n\n return perfectData;\n}\n\nfunction dataEmpty(data, chartType) {\n if (chartType === \"PieChart\" || chartType === \"GeoChart\" || chartType === \"Timeline\") {\n return data.length === 0;\n } else {\n for (var i = 0; i < data.length; i++) {\n if (data[i].data.length > 0) {\n return false;\n }\n }\n\n return true;\n }\n}\n\nfunction addDownloadButton(chart) {\n var download = chart.options.download;\n\n if (download === true) {\n download = {};\n } else if (typeof download === \"string\") {\n download = {\n filename: download\n };\n }\n\n var link = document.createElement(\"a\");\n link.download = download.filename || \"chart.png\";\n link.style.position = \"absolute\";\n link.style.top = \"20px\";\n link.style.right = \"20px\";\n link.style.zIndex = 1000;\n link.style.lineHeight = \"20px\";\n link.target = \"_blank\"; // for safari\n\n var image = document.createElement(\"img\"); // icon from Font Awesome, modified to set fill color\n\n var svg = \"\";\n image.src = \"data:image/svg+xml;utf8,\" + encodeURIComponent(svg);\n image.alt = \"Download\";\n image.style.width = \"20px\";\n image.style.height = \"20px\";\n image.style.border = \"none\";\n link.appendChild(image);\n var element = chart.element;\n element.style.position = \"relative\";\n chart.__downloadAttached = true; // mouseenter\n\n chart.__enterEvent = element.addEventListener(\"mouseover\", function (e) {\n var related = e.relatedTarget; // check download option again to ensure it wasn't changed\n\n if ((!related || related !== this && !this.contains(related)) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n }); // mouseleave\n\n chart.__leaveEvent = element.addEventListener(\"mouseout\", function (e) {\n var related = e.relatedTarget;\n\n if (!related || related !== this && !this.contains(related)) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n}\n\nvar pendingRequests = [];\nvar runningRequests = 0;\nvar maxRequests = 4;\n\nfunction pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n}\n\nfunction runNext() {\n if (runningRequests < maxRequests) {\n var request = pendingRequests.shift();\n\n if (request) {\n runningRequests++;\n getJSON(request[0], request[1], request[2]);\n runNext();\n }\n }\n}\n\nfunction requestComplete() {\n runningRequests--;\n runNext();\n}\n\nfunction getJSON(url, success, error) {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n\n xhr.onload = function () {\n requestComplete();\n\n if (xhr.status === 200) {\n success(JSON.parse(xhr.responseText));\n } else {\n error(xhr.statusText);\n }\n };\n\n xhr.send();\n} // helpers\n\n\nfunction setText(element, text) {\n element.textContent = text;\n} // TODO remove prefix for all messages\n\n\nfunction chartError(element, message, noPrefix) {\n if (!noPrefix) {\n message = \"Error Loading Chart: \" + message;\n }\n\n setText(element, message);\n element.style.color = \"#ff0000\";\n}\n\nfunction errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n}\n\nfunction fetchDataSource(chart, dataSource, showLoading) {\n // only show loading message for urls and callbacks\n if (showLoading && chart.options.loading && (typeof dataSource === \"string\" || typeof dataSource === \"function\")) {\n setText(chart.element, chart.options.loading);\n }\n\n if (typeof dataSource === \"string\") {\n pushRequest(dataSource, function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message);\n });\n } else if (typeof dataSource === \"function\") {\n try {\n dataSource(function (data) {\n chart.rawData = data;\n errorCatcher(chart);\n }, function (message) {\n chartError(chart.element, message, true);\n });\n } catch (err) {\n chartError(chart.element, err, true);\n }\n } else {\n chart.rawData = dataSource;\n errorCatcher(chart);\n }\n}\n\nfunction renderChart(chartType, chart) {\n if (dataEmpty(chart.data, chartType)) {\n var message = chart.options.empty || chart.options.messages && chart.options.messages.empty || \"No data\";\n setText(chart.element, message);\n } else {\n callAdapter(chartType, chart); // TODO add downloadSupported method to adapter\n\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n}\n\nfunction getElement(element) {\n if (typeof element === \"string\") {\n var elementId = element;\n element = document.getElementById(element);\n\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n\n return element;\n} // define classes\n\n\nvar Chart = function Chart(element, dataSource, options) {\n this.element = getElement(element);\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource; // TODO handle charts without an id for eachChart and destroyAll\n\n if (this.element.id) {\n Chartkick.charts[this.element.id] = this;\n }\n\n fetchDataSource(this, dataSource, true);\n\n if (this.options.refresh) {\n this.startRefresh();\n }\n};\n\nChart.prototype.getElement = function getElement() {\n return this.element;\n};\n\nChart.prototype.getDataSource = function getDataSource() {\n return this.dataSource;\n};\n\nChart.prototype.getData = function getData() {\n return this.data;\n};\n\nChart.prototype.getOptions = function getOptions() {\n return this.options;\n};\n\nChart.prototype.getChartObject = function getChartObject() {\n return this.chart;\n};\n\nChart.prototype.getAdapter = function getAdapter() {\n return this.adapter;\n};\n\nChart.prototype.updateData = function updateData(dataSource, options) {\n this.dataSource = dataSource;\n\n if (options) {\n this.__updateOptions(options);\n }\n\n fetchDataSource(this, dataSource, true);\n};\n\nChart.prototype.setOptions = function setOptions(options) {\n this.__updateOptions(options);\n\n this.redraw();\n};\n\nChart.prototype.redraw = function redraw() {\n fetchDataSource(this, this.rawData);\n};\n\nChart.prototype.refreshData = function refreshData() {\n if (typeof this.dataSource === \"string\") {\n // prevent browser from caching\n var sep = this.dataSource.indexOf(\"?\") === -1 ? \"?\" : \"&\";\n var url = this.dataSource + sep + \"_=\" + new Date().getTime();\n fetchDataSource(this, url);\n } else if (typeof this.dataSource === \"function\") {\n fetchDataSource(this, this.dataSource);\n }\n};\n\nChart.prototype.startRefresh = function startRefresh() {\n var this$1$1 = this;\n var refresh = this.options.refresh;\n\n if (refresh && typeof this.dataSource !== \"string\" && typeof this.dataSource !== \"function\") {\n throw new Error(\"Data source must be a URL or callback for refresh\");\n }\n\n if (!this.intervalId) {\n if (refresh) {\n this.intervalId = setInterval(function () {\n this$1$1.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n};\n\nChart.prototype.stopRefresh = function stopRefresh() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n};\n\nChart.prototype.toImage = function toImage(download) {\n // TODO move logic to adapter\n if (this.adapter === \"chartjs\") {\n if (download && download.background && download.background !== \"transparent\") {\n // https://stackoverflow.com/questions/30464750/chartjs-line-chart-set-background-color\n var canvas = this.chart.canvas;\n var ctx = this.chart.ctx;\n var tmpCanvas = document.createElement(\"canvas\");\n var tmpCtx = tmpCanvas.getContext(\"2d\");\n tmpCanvas.width = ctx.canvas.width;\n tmpCanvas.height = ctx.canvas.height;\n tmpCtx.fillStyle = download.background;\n tmpCtx.fillRect(0, 0, tmpCanvas.width, tmpCanvas.height);\n tmpCtx.drawImage(canvas, 0, 0);\n return tmpCanvas.toDataURL(\"image/png\");\n } else {\n return this.chart.toBase64Image();\n }\n } else {\n throw new Error(\"Feature only available for Chart.js\");\n }\n};\n\nChart.prototype.destroy = function destroy() {\n this.destroyed = true;\n this.stopRefresh();\n\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n\n if (this.__enterEvent) {\n this.element.removeEventListener(\"mouseover\", this.__enterEvent);\n }\n\n if (this.__leaveEvent) {\n this.element.removeEventListener(\"mouseout\", this.__leaveEvent);\n }\n};\n\nChart.prototype.__updateOptions = function __updateOptions(options) {\n var updateRefresh = options.refresh && options.refresh !== this.options.refresh;\n this.options = merge(Chartkick.options, options);\n\n if (updateRefresh) {\n this.stopRefresh();\n this.startRefresh();\n }\n};\n\nChart.prototype.__render = function __render() {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n};\n\nChart.prototype.__config = function __config() {\n return Chartkick.config;\n};\n\nvar LineChart = /*@__PURE__*/function (Chart) {\n function LineChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) LineChart.__proto__ = Chart;\n LineChart.prototype = Object.create(Chart && Chart.prototype);\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.__processData = function __processData() {\n return processSeries(this);\n };\n\n LineChart.prototype.__chartName = function __chartName() {\n return \"LineChart\";\n };\n\n return LineChart;\n}(Chart);\n\nvar PieChart = /*@__PURE__*/function (Chart) {\n function PieChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) PieChart.__proto__ = Chart;\n PieChart.prototype = Object.create(Chart && Chart.prototype);\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.__processData = function __processData() {\n return processSimple(this);\n };\n\n PieChart.prototype.__chartName = function __chartName() {\n return \"PieChart\";\n };\n\n return PieChart;\n}(Chart);\n\nvar ColumnChart = /*@__PURE__*/function (Chart) {\n function ColumnChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) ColumnChart.__proto__ = Chart;\n ColumnChart.prototype = Object.create(Chart && Chart.prototype);\n ColumnChart.prototype.constructor = ColumnChart;\n\n ColumnChart.prototype.__processData = function __processData() {\n return processSeries(this, null, true);\n };\n\n ColumnChart.prototype.__chartName = function __chartName() {\n return \"ColumnChart\";\n };\n\n return ColumnChart;\n}(Chart);\n\nvar BarChart = /*@__PURE__*/function (Chart) {\n function BarChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) BarChart.__proto__ = Chart;\n BarChart.prototype = Object.create(Chart && Chart.prototype);\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.__processData = function __processData() {\n return processSeries(this, null, true);\n };\n\n BarChart.prototype.__chartName = function __chartName() {\n return \"BarChart\";\n };\n\n return BarChart;\n}(Chart);\n\nvar AreaChart = /*@__PURE__*/function (Chart) {\n function AreaChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) AreaChart.__proto__ = Chart;\n AreaChart.prototype = Object.create(Chart && Chart.prototype);\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.__processData = function __processData() {\n return processSeries(this);\n };\n\n AreaChart.prototype.__chartName = function __chartName() {\n return \"AreaChart\";\n };\n\n return AreaChart;\n}(Chart);\n\nvar GeoChart = /*@__PURE__*/function (Chart) {\n function GeoChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) GeoChart.__proto__ = Chart;\n GeoChart.prototype = Object.create(Chart && Chart.prototype);\n GeoChart.prototype.constructor = GeoChart;\n\n GeoChart.prototype.__processData = function __processData() {\n return processSimple(this);\n };\n\n GeoChart.prototype.__chartName = function __chartName() {\n return \"GeoChart\";\n };\n\n return GeoChart;\n}(Chart);\n\nvar ScatterChart = /*@__PURE__*/function (Chart) {\n function ScatterChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) ScatterChart.__proto__ = Chart;\n ScatterChart.prototype = Object.create(Chart && Chart.prototype);\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype.__processData = function __processData() {\n return processSeries(this, \"number\");\n };\n\n ScatterChart.prototype.__chartName = function __chartName() {\n return \"ScatterChart\";\n };\n\n return ScatterChart;\n}(Chart);\n\nvar BubbleChart = /*@__PURE__*/function (Chart) {\n function BubbleChart() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) BubbleChart.__proto__ = Chart;\n BubbleChart.prototype = Object.create(Chart && Chart.prototype);\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype.__processData = function __processData() {\n return processSeries(this, \"bubble\");\n };\n\n BubbleChart.prototype.__chartName = function __chartName() {\n return \"BubbleChart\";\n };\n\n return BubbleChart;\n}(Chart);\n\nvar Timeline = /*@__PURE__*/function (Chart) {\n function Timeline() {\n Chart.apply(this, arguments);\n }\n\n if (Chart) Timeline.__proto__ = Chart;\n Timeline.prototype = Object.create(Chart && Chart.prototype);\n Timeline.prototype.constructor = Timeline;\n\n Timeline.prototype.__processData = function __processData() {\n var data = this.rawData;\n\n for (var i = 0; i < data.length; i++) {\n data[i][1] = toDate(data[i][1]);\n data[i][2] = toDate(data[i][2]);\n }\n\n return data;\n };\n\n Timeline.prototype.__chartName = function __chartName() {\n return \"Timeline\";\n };\n\n return Timeline;\n}(Chart);\n\nChartkick.LineChart = LineChart;\nChartkick.PieChart = PieChart;\nChartkick.ColumnChart = ColumnChart;\nChartkick.BarChart = BarChart;\nChartkick.AreaChart = AreaChart;\nChartkick.GeoChart = GeoChart;\nChartkick.ScatterChart = ScatterChart;\nChartkick.BubbleChart = BubbleChart;\nChartkick.Timeline = Timeline; // not ideal, but allows for simpler integration\n\nif (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick; // clean up previous charts before Turbolinks loads new page\n\n document.addEventListener(\"turbolinks:before-render\", function () {\n if (Chartkick.config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n }); // clean up previous charts before Turbo loads new page\n\n document.addEventListener(\"turbo:before-render\", function () {\n if (Chartkick.config.autoDestroy !== false) {\n Chartkick.destroyAll();\n }\n }); // use setTimeout so charting library can come later in same JS file\n\n setTimeout(function () {\n window.dispatchEvent(new Event(\"chartkick:load\"));\n }, 0);\n} // backwards compatibility for esm require\n\n\nChartkick.default = Chartkick;\nexport { Chartkick as default };","// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport AddProviderController from \"./add_provider_controller.js\"\napplication.register(\"add-provider\", AddProviderController)\n\nimport AdminController from \"./admin_controller.js\"\napplication.register(\"admin\", AdminController)\n\nimport AutoautosubmitController from \"./autosubmit.js\"\napplication.register(\"autosubmit\", AutoautosubmitController)\n\nimport DragController from \"./drag_controller.js\"\napplication.register(\"drag\", DragController)\n\nimport DropzoneController from \"./dropzone_controller.js\"\napplication.register(\"dropzone\", DropzoneController)\n\nimport FilterTasksController from \"./filter_tasks_controller.js\"\napplication.register(\"filter-tasks\", FilterTasksController)\n\nimport HelloController from \"./hello_controller.js\"\napplication.register(\"hello\", HelloController)\n\nimport ProcessFlowsController from \"./process_flows_controller.js\"\napplication.register(\"process-flows\", ProcessFlowsController)\n\nimport ProvidersController from \"./providers_controller.js\"\napplication.register(\"providers\", ProvidersController)\n\nimport PushToToolsController from \"./push_to_tools_controller.js\"\napplication.register(\"push-to-tools\", PushToToolsController)\n\nimport RemovalsController from \"./removals_controller.js\"\napplication.register(\"removals\", RemovalsController)\n\nimport RemoveProviderController from \"./remove_provider_controller.js\"\napplication.register(\"remove-provider\", RemoveProviderController)\n\n\nimport SnQueryFormController from \"./sn_query_form_controller.js\"\napplication.register(\"sn-query-form\", SnQueryFormController)\n\nimport TasksController from \"./tasks_controller.js\"\napplication.register(\"tasks\", TasksController)\n\nimport ModalController from \"./modal_controller.js\"\napplication.register(\"modal\", ModalController)\n\nimport InsightsController from \"./insights_controller.js\"\napplication.register(\"insights\", InsightsController)","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\n/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\n\nvar lim = function lim(v, l, h) {\n return Math.max(Math.min(v, h), l);\n};\n\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\n\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\n\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\n\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\n\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nvar map$1 = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15\n};\n\nvar hex = _toConsumableArray('0123456789ABCDEF');\n\nvar h1 = function h1(b) {\n return hex[b & 0xF];\n};\n\nvar h2 = function h2(b) {\n return hex[(b & 0xF0) >> 4] + hex[b & 0xF];\n};\n\nvar eq = function eq(b) {\n return (b & 0xF0) >> 4 === (b & 0xF);\n};\n\nvar isShort = function isShort(v) {\n return eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n};\n\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? map$1[str[7]] << 4 | map$1[str[8]] : 255\n };\n }\n }\n\n return ret;\n}\n\nvar alpha = function alpha(a, f) {\n return a < 255 ? f(a) : '';\n};\n\nfunction _hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : undefined;\n}\n\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction hsl2rgbn(h, s, l) {\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n return [f(0), f(8), f(4)];\n}\n\nfunction hsv2rgbn(h, s, v) {\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 60) % 6;\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n };\n\n return [f(5), f(3), f(1)];\n}\n\nfunction hwb2rgbn(h, w, b) {\n var rgb = hsl2rgbn(h, 1, 0.5);\n var i;\n\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n\n return rgb;\n}\n\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n\n if (g === max) {\n return (b - r) / d + 2;\n }\n\n return (r - g) / d + 4;\n}\n\nfunction rgb2hsl(v) {\n var range = 255;\n var r = v.r / range;\n var g = v.g / range;\n var b = v.b / range;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var l = (max + min) / 2;\n var h, s, d;\n\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n\n return [h | 0, s || 0, l];\n}\n\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\n\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\n\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\n\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\n\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\n\nfunction hueParse(str) {\n var m = HUE_RE.exec(str);\n var a = 255;\n var v;\n\n if (!m) {\n return;\n }\n\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n\n var h = hue(+m[2]);\n var p1 = +m[3] / 100;\n var p2 = +m[4] / 100;\n\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\n\nfunction _rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\n\nfunction _hslString(v) {\n if (!v) {\n return;\n }\n\n var a = rgb2hsl(v);\n var h = a[0];\n var s = n2p(a[1]);\n var l = n2p(a[2]);\n return v.a < 255 ? \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(b2n(v.a), \")\") : \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\");\n}\n\nvar map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nvar names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\n\nfunction unpack() {\n var unpacked = {};\n var keys = Object.keys(names$1);\n var tkeys = Object.keys(map);\n var i, j, k, ok, nk;\n\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n\n return unpacked;\n}\n\nvar names;\n\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n\n var a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction rgbParse(str) {\n var m = RGB_RE.exec(str);\n var a = 255;\n var r, g, b;\n\n if (!m) {\n return;\n }\n\n if (m[7] !== r) {\n var v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\n\nfunction _rgbString(v) {\n return v && (v.a < 255 ? \"rgba(\".concat(v.r, \", \").concat(v.g, \", \").concat(v.b, \", \").concat(b2n(v.a), \")\") : \"rgb(\".concat(v.r, \", \").concat(v.g, \", \").concat(v.b, \")\"));\n}\n\nvar to = function to(v) {\n return v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\n};\n\nvar from = function from(v) {\n return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n};\n\nfunction _interpolate(rgb1, rgb2, t) {\n var r = from(b2n(rgb1.r));\n var g = from(b2n(rgb1.g));\n var b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n var tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\n\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\n\nfunction fromObject(input) {\n var v = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {\n r: input[0],\n g: input[1],\n b: input[2],\n a: 255\n };\n\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {\n r: 0,\n g: 0,\n b: 0,\n a: 1\n });\n v.a = n2b(v.a);\n }\n\n return v;\n}\n\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n\n return hueParse(str);\n}\n\nvar Color = /*#__PURE__*/function () {\n function Color(input) {\n _classCallCheck(this, Color);\n\n if (input instanceof Color) {\n return input;\n }\n\n var type = _typeof(input);\n\n var v;\n\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n\n this._rgb = v;\n this._valid = !!v;\n }\n\n _createClass(Color, [{\n key: \"valid\",\n get: function get() {\n return this._valid;\n }\n }, {\n key: \"rgb\",\n get: function get() {\n var v = clone(this._rgb);\n\n if (v) {\n v.a = b2n(v.a);\n }\n\n return v;\n },\n set: function set(obj) {\n this._rgb = fromObject(obj);\n }\n }, {\n key: \"rgbString\",\n value: function rgbString() {\n return this._valid ? _rgbString(this._rgb) : undefined;\n }\n }, {\n key: \"hexString\",\n value: function hexString() {\n return this._valid ? _hexString(this._rgb) : undefined;\n }\n }, {\n key: \"hslString\",\n value: function hslString() {\n return this._valid ? _hslString(this._rgb) : undefined;\n }\n }, {\n key: \"mix\",\n value: function mix(color, weight) {\n if (color) {\n var c1 = this.rgb;\n var c2 = color.rgb;\n var w2;\n var p = weight === w2 ? 0.5 : weight;\n var w = 2 * p - 1;\n var a = c1.a - c2.a;\n var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n\n return this;\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(color, t) {\n if (color) {\n this._rgb = _interpolate(this._rgb, color._rgb, t);\n }\n\n return this;\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new Color(this.rgb);\n }\n }, {\n key: \"alpha\",\n value: function alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n }, {\n key: \"clearer\",\n value: function clearer(ratio) {\n var rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n }, {\n key: \"greyscale\",\n value: function greyscale() {\n var rgb = this._rgb;\n var val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n }, {\n key: \"opaquer\",\n value: function opaquer(ratio) {\n var rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n }, {\n key: \"negate\",\n value: function negate() {\n var v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n }, {\n key: \"lighten\",\n value: function lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n }, {\n key: \"darken\",\n value: function darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n }, {\n key: \"saturate\",\n value: function saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n }, {\n key: \"desaturate\",\n value: function desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n }, {\n key: \"rotate\",\n value: function rotate(deg) {\n _rotate(this._rgb, deg);\n\n return this;\n }\n }]);\n\n return Color;\n}();\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, _hexString as hexString, hsl2rgb, _hslString as hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, _rgbString as rgbString, _rotate as rotate, round };","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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(_e) { throw _e; }, 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 = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, 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\n/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n/**\n * @namespace Chart.helpers\n */\n\n/**\n* An empty function that can be used, for example, for optional callback.\n*/\n\nfunction noop() {\n /* noop */\n}\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\n\n\nvar uid = function () {\n var id = 0;\n return function () {\n return id++;\n };\n}();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\n\n\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\n\n\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n\n var type = Object.prototype.toString.call(value);\n\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\n\n\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\n\n\nfunction isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\n\n\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\n\n\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nvar toPercentage = function toPercentage(value, dimension) {\n return typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\n};\n\nvar toDimension = function toDimension(value, dimension) {\n return typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n};\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\n\n\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\nfunction each(loopable, fn, thisArg, reverse) {\n var i, len, keys;\n\n if (isArray(loopable)) {\n len = loopable.length;\n\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\n\n\nfunction _elementsEqual(a0, a1) {\n var i, ilen, v0, v1;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\n\n\nfunction clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n\n if (isObject(source)) {\n var target = Object.create(null);\n var keys = Object.keys(source);\n var klen = keys.length;\n var k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\n\n\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n\n var tval = target[key];\n var sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nfunction merge(target, source, options) {\n var sources = isArray(source) ? source : [source];\n var ilen = sources.length;\n\n if (!isObject(target)) {\n return target;\n }\n\n options = options || {};\n var merger = options.merger || _merger;\n var current;\n\n for (var i = 0; i < ilen; ++i) {\n current = sources[i];\n\n if (!isObject(current)) {\n continue;\n }\n\n var keys = Object.keys(current);\n\n for (var k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options);\n }\n }\n\n return target;\n}\n\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\n\n\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n\n var tval = target[key];\n var sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */\n\n\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n} // resolveObjectKey resolver cache\n\n\nvar keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': function _(v) {\n return v;\n },\n // default resolvers\n x: function x(o) {\n return o.x;\n },\n y: function y(o) {\n return o.y;\n }\n};\n/**\n * @private\n */\n\nfunction _splitKey(key) {\n var parts = key.split('.');\n var keys = [];\n var tmp = '';\n\n var _iterator = _createForOfIteratorHelper(parts),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n tmp += part;\n\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return keys;\n}\n\nfunction _getKeyResolver(key) {\n var keys = _splitKey(key);\n\n return function (obj) {\n var _iterator2 = _createForOfIteratorHelper(keys),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var k = _step2.value;\n\n if (k === '') {\n break;\n }\n\n obj = obj && obj[k];\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return obj;\n };\n}\n\nfunction resolveObjectKey(obj, key) {\n var resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n\n return resolver(obj);\n}\n/**\n * @private\n */\n\n\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nvar defined = function defined(value) {\n return typeof value !== 'undefined';\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n}; // Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\n\n\nvar setsEqual = function setsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n\n var _iterator3 = _createForOfIteratorHelper(a),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var item = _step3.value;\n\n if (!b.has(item)) {\n return false;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return true;\n};\n/**\n * @param e - The event\n * @private\n */\n\n\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\n\nvar PI = Math.PI;\nvar TAU = 2 * PI;\nvar PITAU = TAU + PI;\nvar INFINITY = Number.POSITIVE_INFINITY;\nvar RAD_PER_DEG = PI / 180;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\nvar log10 = Math.log10;\nvar sign = Math.sign;\n\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\n\n\nfunction niceNum(range) {\n var roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n var niceRange = Math.pow(10, Math.floor(log10(range)));\n var fraction = range / niceRange;\n var niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\n\n\nfunction _factorize(value) {\n var result = [];\n var sqrt = Math.sqrt(value);\n var i;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n\n result.sort(function (a, b) {\n return a - b;\n }).pop();\n return result;\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction almostWhole(x, epsilon) {\n var rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */\n\n\nfunction _setMinAndMaxByKey(array, target, property) {\n var i, ilen, value;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\n\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\n\n\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n\n var e = 1;\n var p = 0;\n\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n\n return p;\n} // Gets the angle from vertical upright to the point about a centre.\n\n\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n var distanceFromXCenter = anglePoint.x - centrePoint.x;\n var distanceFromYCenter = anglePoint.y - centrePoint.y;\n var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle: angle,\n distance: radialDistanceFromCenter\n };\n}\n\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\n\n\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\n\n\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */\n\n\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n var a = _normalizeAngle(angle);\n\n var s = _normalizeAngle(start);\n\n var e = _normalizeAngle(end);\n\n var angleToStart = _normalizeAngle(s - a);\n\n var angleToEnd = _normalizeAngle(e - a);\n\n var startToAngle = _normalizeAngle(a - s);\n\n var endToAngle = _normalizeAngle(a - e);\n\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\n\n\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */\n\n\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\n\n\nfunction _isBetween(value, start, end) {\n var epsilon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1e-6;\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || function (index) {\n return table[index] < value;\n };\n\n var hi = table.length - 1;\n var lo = 0;\n var mid;\n\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {\n lo: lo,\n hi: hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\n\n\nvar _lookupByKey = function _lookupByKey(table, key, value, last) {\n return _lookup(table, value, last ? function (index) {\n var ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n } : function (index) {\n return table[index][key] < value;\n });\n};\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\n\n\nvar _rlookupByKey = function _rlookupByKey(table, key, value) {\n return _lookup(table, value, function (index) {\n return table[index][key] >= value;\n });\n};\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\n\n\nfunction _filterBetween(values, min, max) {\n var start = 0;\n var end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\n\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(function (key) {\n var method = '_onData' + _capitalize(key);\n\n var base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value: function value() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var res = base.apply(this, args);\n\n array._chartjs.listeners.forEach(function (object) {\n if (typeof object[method] === 'function') {\n object[method].apply(object, args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\nfunction unlistenArrayEvents(array, listener) {\n var stub = array._chartjs;\n\n if (!stub) {\n return;\n }\n\n var listeners = stub.listeners;\n var index = listeners.indexOf(listener);\n\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach(function (key) {\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */\n\n\nfunction _arrayUnique(items) {\n var set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/\n\n\nvar requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\n\n\nfunction throttled(fn, thisArg) {\n var argsToUse = [];\n var ticking = false;\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // Save the args for use later\n argsToUse = args;\n\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, function () {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */\n\n\nfunction debounce(fn, delay) {\n var timeout;\n return function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\n\n\nvar _toLeftRightCenter = function _toLeftRightCenter(align) {\n return align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n};\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\n\n\nvar _alignStartEnd = function _alignStartEnd(align, start, end) {\n return align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n};\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\n\n\nvar _textX = function _textX(align, left, right, rtl) {\n var check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */\n\n\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n var pointCount = points.length;\n var start = 0;\n var count = pointCount;\n\n if (meta._sorted) {\n var iScale = meta.iScale,\n _parsed = meta._parsed;\n var axis = iScale.axis;\n\n var _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n\n if (minDefined) {\n start = _limitValue(Math.min( // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n\n if (maxDefined) {\n count = _limitValue(Math.max( // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1, // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {\n start: start,\n count: count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\n\n\nfunction _scaleRangesChanged(meta) {\n var xScale = meta.xScale,\n yScale = meta.yScale,\n _scaleRanges = meta._scaleRanges;\n var newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n\n var changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nvar atEdge = function atEdge(t) {\n return t === 0 || t === 1;\n};\n\nvar elasticIn = function elasticIn(t, s, p) {\n return -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\n};\n\nvar elasticOut = function elasticOut(t, s, p) {\n return Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n};\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\n\n\nvar effects = {\n linear: function linear(t) {\n return t;\n },\n easeInQuad: function easeInQuad(t) {\n return t * t;\n },\n easeOutQuad: function easeOutQuad(t) {\n return -t * (t - 2);\n },\n easeInOutQuad: function easeInOutQuad(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1);\n },\n easeInCubic: function easeInCubic(t) {\n return t * t * t;\n },\n easeOutCubic: function easeOutCubic(t) {\n return (t -= 1) * t * t + 1;\n },\n easeInOutCubic: function easeInOutCubic(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2);\n },\n easeInQuart: function easeInQuart(t) {\n return t * t * t * t;\n },\n easeOutQuart: function easeOutQuart(t) {\n return -((t -= 1) * t * t * t - 1);\n },\n easeInOutQuart: function easeInOutQuart(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2);\n },\n easeInQuint: function easeInQuint(t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function easeOutQuint(t) {\n return (t -= 1) * t * t * t * t + 1;\n },\n easeInOutQuint: function easeInOutQuint(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2);\n },\n easeInSine: function easeInSine(t) {\n return -Math.cos(t * HALF_PI) + 1;\n },\n easeOutSine: function easeOutSine(t) {\n return Math.sin(t * HALF_PI);\n },\n easeInOutSine: function easeInOutSine(t) {\n return -0.5 * (Math.cos(PI * t) - 1);\n },\n easeInExpo: function easeInExpo(t) {\n return t === 0 ? 0 : Math.pow(2, 10 * (t - 1));\n },\n easeOutExpo: function easeOutExpo(t) {\n return t === 1 ? 1 : -Math.pow(2, -10 * t) + 1;\n },\n easeInOutExpo: function easeInOutExpo(t) {\n return atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2);\n },\n easeInCirc: function easeInCirc(t) {\n return t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1);\n },\n easeOutCirc: function easeOutCirc(t) {\n return Math.sqrt(1 - (t -= 1) * t);\n },\n easeInOutCirc: function easeInOutCirc(t) {\n return (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n },\n easeInElastic: function easeInElastic(t) {\n return atEdge(t) ? t : elasticIn(t, 0.075, 0.3);\n },\n easeOutElastic: function easeOutElastic(t) {\n return atEdge(t) ? t : elasticOut(t, 0.075, 0.3);\n },\n easeInOutElastic: function easeInOutElastic(t) {\n var s = 0.1125;\n var p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack: function easeInBack(t) {\n var s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack: function easeOutBack(t) {\n var s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack: function easeInOutBack(t) {\n var s = 1.70158;\n\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: function easeInBounce(t) {\n return 1 - effects.easeOutBounce(1 - t);\n },\n easeOutBounce: function easeOutBounce(t) {\n var m = 7.5625;\n var d = 2.75;\n\n if (t < 1 / d) {\n return m * t * t;\n }\n\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: function easeInOutBounce(t) {\n return t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n }\n};\n\nfunction isPatternOrGradient(value) {\n if (value && _typeof(value) === 'object') {\n var type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n\nvar numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nvar colors = ['color', 'borderColor', 'backgroundColor'];\n\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: function _scriptable(name) {\n return name !== 'onProgress' && name !== 'onComplete' && name !== 'fn';\n }\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: function fn(v) {\n return v | 0;\n }\n }\n }\n }\n });\n}\n\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n\nvar intlCache = new Map();\n\nfunction getNumberFormat(locale, options) {\n options = options || {};\n var cacheKey = locale + JSON.stringify(options);\n var formatter = intlCache.get(cacheKey);\n\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n\n return formatter;\n}\n\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nvar formatters = {\n values: function values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric: function numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n\n var locale = this.chart.options.locale;\n var notation;\n var delta = tickValue;\n\n if (ticks.length > 1) {\n var maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n var logDelta = log10(Math.abs(delta));\n var numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n var options = {\n notation: notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic: function logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n\n var remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n\n return '';\n }\n};\n\nfunction calculateDelta(tickValue, ticks) {\n var delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n\n return delta;\n}\n\nvar Ticks = {\n formatters: formatters\n};\n\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n clip: true,\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: function tickWidth(_ctx, options) {\n return options.lineWidth;\n },\n tickColor: function tickColor(_ctx, options) {\n return options.color;\n },\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: function _scriptable(name) {\n return !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser';\n },\n _indexable: function _indexable(name) {\n return name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash';\n }\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: function _scriptable(name) {\n return name !== 'backdropPadding' && name !== 'callback';\n },\n _indexable: function _indexable(name) {\n return name !== 'backdropPadding';\n }\n });\n}\n\nvar overrides = Object.create(null);\nvar descriptors = Object.create(null);\n\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n\n var keys = key.split('.');\n\n for (var i = 0, n = keys.length; i < n; ++i) {\n var k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n\n return node;\n}\n\nfunction _set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n\n return merge(getScope$1(root, ''), scope);\n}\n\nvar Defaults = /*#__PURE__*/function () {\n function Defaults(_descriptors, _appliers) {\n _classCallCheck(this, Defaults);\n\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n\n this.devicePixelRatio = function (context) {\n return context.chart.platform.getDevicePixelRatio();\n };\n\n this.elements = {};\n this.events = ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n\n this.hoverBackgroundColor = function (ctx, options) {\n return getHoverColor(options.backgroundColor);\n };\n\n this.hoverBorderColor = function (ctx, options) {\n return getHoverColor(options.borderColor);\n };\n\n this.hoverColor = function (ctx, options) {\n return getHoverColor(options.color);\n };\n\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n _createClass(Defaults, [{\n key: \"set\",\n value: function set(scope, values) {\n return _set(this, scope, values);\n }\n }, {\n key: \"get\",\n value: function get(scope) {\n return getScope$1(this, scope);\n }\n }, {\n key: \"describe\",\n value: function describe(scope, values) {\n return _set(descriptors, scope, values);\n }\n }, {\n key: \"override\",\n value: function override(scope, values) {\n return _set(overrides, scope, values);\n }\n }, {\n key: \"route\",\n value: function route(scope, name, targetScope, targetName) {\n var _Object$definePropert;\n\n var scopeObject = getScope$1(this, scope);\n var targetScopeObject = getScope$1(this, targetScope);\n var privateName = '_' + name;\n Object.defineProperties(scopeObject, (_Object$definePropert = {}, _defineProperty(_Object$definePropert, privateName, {\n value: scopeObject[name],\n writable: true\n }), _defineProperty(_Object$definePropert, name, {\n enumerable: true,\n get: function get() {\n var local = this[privateName];\n var target = targetScopeObject[targetName];\n\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n\n return valueOrDefault(local, target);\n },\n set: function set(value) {\n this[privateName] = value;\n }\n }), _Object$definePropert));\n }\n }, {\n key: \"apply\",\n value: function apply(appliers) {\n var _this = this;\n\n appliers.forEach(function (apply) {\n return apply(_this);\n });\n }\n }]);\n\n return Defaults;\n}();\n\nvar defaults = /* #__PURE__ */new Defaults({\n _scriptable: function _scriptable(name) {\n return !name.startsWith('on');\n },\n _indexable: function _indexable(name) {\n return name !== 'events';\n },\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */\n\n\nfunction _measureText(ctx, data, gc, longest, string) {\n var textWidth = data[string];\n\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n\n if (textWidth > longest) {\n longest = textWidth;\n }\n\n return longest;\n}\n/**\n * @private\n */\n// eslint-disable-next-line complexity\n\n\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n var data = cache.data = cache.data || {};\n var gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n ctx.font = font;\n var longest = 0;\n var ilen = arrayOfThings.length;\n var i, j, jlen, thing, nestedThing;\n\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i]; // Undefined strings and arrays should not be measured\n\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j]; // Undefined strings and arrays should not be measured\n\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n var gcLen = gc.length / 2;\n\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n\n gc.splice(0, gcLen);\n }\n\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\n\n\nfunction _alignPixel(chart, pixel, width) {\n var devicePixelRatio = chart.currentDevicePixelRatio;\n var halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */\n\n\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save(); // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n} // eslint-disable-next-line complexity\n\n\nfunction drawPointLegend(ctx, options, x, y, w) {\n var type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n var style = options.pointStyle;\n var rotation = options.rotation;\n var radius = options.radius;\n var rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && _typeof(style) === 'object') {\n type = style.toString();\n\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n\n ctx.closePath();\n break;\n\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n\n rad += QUARTER_PI;\n\n /* falls through */\n\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n\n case 'crossRot':\n rad += QUARTER_PI;\n\n /* falls through */\n\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\n\n\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\n\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */\n\n\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n if (mode === 'middle') {\n var midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */\n\n\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\n\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n var metrics = ctx.measureText(line);\n var left = x - metrics.actualBoundingBoxLeft;\n var right = x + metrics.actualBoundingBoxRight;\n var top = y - metrics.actualBoundingBoxAscent;\n var bottom = y + metrics.actualBoundingBoxDescent;\n var yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx, opts) {\n var oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */\n\n\nfunction renderText(ctx, text, x, y, font) {\n var opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var lines = isArray(text) ? text : [text];\n var stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n var i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\n\n\nfunction addRoundedRectPath(ctx, rect) {\n var x = rect.x,\n y = rect.y,\n w = rect.w,\n h = rect.h,\n radius = rect.radius; // top left arc\n\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true); // line from top left to bottom left\n\n ctx.lineTo(x, y + h - radius.bottomLeft); // bottom left arc\n\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true); // line from bottom left to bottom right\n\n ctx.lineTo(x + w - radius.bottomRight, y + h); // bottom right arc\n\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true); // line from bottom right to top right\n\n ctx.lineTo(x + w, y + radius.topRight); // top right arc\n\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true); // line from top right to top left\n\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nvar LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nvar FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n\n/**\n* Converts the given line height `value` in pixels for a specific font `size`.\n* @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n* @param size - The font size (in pixels) used to resolve relative `value`.\n* @returns The effective line height in pixels (size * 1.2 if value is invalid).\n* @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n* @since 2.7.0\n*/\n\nfunction toLineHeight(value, size) {\n var matches = ('' + value).match(LINE_HEIGHT);\n\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n\n case '%':\n value /= 100;\n break;\n }\n\n return size * value;\n}\n\nvar numberOrZero = function numberOrZero(v) {\n return +v || 0;\n};\n\nfunction _readValueToProps(value, props) {\n var ret = {};\n var objProps = isObject(props);\n var keys = objProps ? Object.keys(props) : props;\n var read = isObject(value) ? objProps ? function (prop) {\n return valueOrDefault(value[prop], value[props[prop]]);\n } : function (prop) {\n return value[prop];\n } : function () {\n return value;\n };\n\n var _iterator4 = _createForOfIteratorHelper(keys),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var prop = _step4.value;\n ret[prop] = numberOrZero(read(prop));\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\n\n\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\n\n\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\n\n\nfunction toPadding(value) {\n var obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\n\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n var size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n\n var style = valueOrDefault(options.style, fallback.style);\n\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n var font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size: size,\n style: style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\n\n\nfunction resolve(inputs, context, index, info) {\n var cacheable = true;\n var i, ilen, value;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n\n if (value === undefined) {\n continue;\n }\n\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\n\n\nfunction _addGrace(minmax, grace, beginAtZero) {\n var min = minmax.min,\n max = minmax.max;\n var change = toDimension(grace, (max - min) / 2);\n\n var keepZero = function keepZero(value, add) {\n return beginAtZero && value === 0 ? 0 : value + add;\n };\n\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\n\n\nfunction _createResolver(scopes) {\n var _cache;\n\n var prefixes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n var rootScopes = arguments.length > 2 ? arguments[2] : undefined;\n var fallback = arguments.length > 3 ? arguments[3] : undefined;\n var getTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function () {\n return scopes[0];\n };\n var finalRootScopes = rootScopes || scopes;\n\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n\n var cache = (_cache = {}, _defineProperty(_cache, Symbol.toStringTag, 'Object'), _defineProperty(_cache, \"_cacheable\", true), _defineProperty(_cache, \"_scopes\", scopes), _defineProperty(_cache, \"_rootScopes\", finalRootScopes), _defineProperty(_cache, \"_fallback\", fallback), _defineProperty(_cache, \"_getTarget\", getTarget), _defineProperty(_cache, \"override\", function override(scope) {\n return _createResolver([scope].concat(_toConsumableArray(scopes)), prefixes, finalRootScopes, fallback);\n }), _cache);\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty: function deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n\n delete target._keys; // remove cached keys\n\n delete scopes[0][prop]; // remove from top level scope\n\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get: function get(target, prop) {\n return _cached(target, prop, function () {\n return _resolveWithPrefixes(prop, prefixes, scopes, target);\n });\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf: function getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has: function has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys: function ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set: function set(target, prop, value) {\n var storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n\n delete target._keys; // remove cached keys\n\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\n\n\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n var cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: function setContext(ctx) {\n return _attachContext(proxy, ctx, subProxy, descriptorDefaults);\n },\n override: function override(scope) {\n return _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults);\n }\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty: function deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n\n delete proxy[prop]; // remove from proxy\n\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get: function get(target, prop, receiver) {\n return _cached(target, prop, function () {\n return _resolveWithContext(target, prop, receiver);\n });\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf: function getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has: function has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys: function ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set: function set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n\n delete target[prop]; // remove from cache\n\n return true;\n }\n });\n}\n/**\n * @private\n */\n\n\nfunction _descriptors(proxy) {\n var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n scriptable: true,\n indexable: true\n };\n\n var _proxy$_scriptable = proxy._scriptable,\n _scriptable = _proxy$_scriptable === void 0 ? defaults.scriptable : _proxy$_scriptable,\n _proxy$_indexable = proxy._indexable,\n _indexable = _proxy$_indexable === void 0 ? defaults.indexable : _proxy$_indexable,\n _proxy$_allKeys = proxy._allKeys,\n _allKeys = _proxy$_allKeys === void 0 ? defaults.allKeys : _proxy$_allKeys;\n\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : function () {\n return _scriptable;\n },\n isIndexable: isFunction(_indexable) ? _indexable : function () {\n return _indexable;\n }\n };\n}\n\nvar readKey = function readKey(prefix, name) {\n return prefix ? prefix + _capitalize(name) : name;\n};\n\nvar needsSubResolver = function needsSubResolver(prop, value) {\n return isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\n};\n\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n\n var value = resolve(); // cache the resolved value\n\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(target, prop, receiver) {\n var _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n var value = _proxy[prop]; // resolve from proxy\n // resolve with context\n\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n\n return value;\n}\n\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n var _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n _stack = target._stack;\n\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n\n _stack.add(prop);\n\n var value = getValue(_context, _subProxy || receiver);\n\n _stack.delete(prop);\n\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n\n return value;\n}\n\nfunction _resolveArray(prop, value, target, isIndexable) {\n var _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n var arr = value;\n\n var scopes = _proxy._scopes.filter(function (s) {\n return s !== arr;\n });\n\n value = [];\n\n var _iterator5 = _createForOfIteratorHelper(arr),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var item = _step5.value;\n var resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n\n return value;\n}\n\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nvar getScope = function getScope(key, parent) {\n return key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n};\n\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n var _iterator6 = _createForOfIteratorHelper(parentScopes),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var parent = _step6.value;\n var scope = getScope(key, parent);\n\n if (scope) {\n set.add(scope);\n var fallback = resolveFallback(scope._fallback, key, value);\n\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return false;\n}\n\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n var rootScopes = resolver._rootScopes;\n var fallback = resolveFallback(resolver._fallback, prop, value);\n var allScopes = [].concat(_toConsumableArray(parentScopes), _toConsumableArray(rootScopes));\n var set = new Set();\n set.add(value);\n var key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n\n if (key === null) {\n return false;\n }\n\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n\n if (key === null) {\n return false;\n }\n }\n\n return _createResolver(Array.from(set), [''], rootScopes, fallback, function () {\n return subGetTarget(resolver, prop, value);\n });\n}\n\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n\n return key;\n}\n\nfunction subGetTarget(resolver, prop, value) {\n var parent = resolver._getTarget();\n\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n\n var target = parent[prop];\n\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n\n return target || {};\n}\n\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n var value;\n\n var _iterator7 = _createForOfIteratorHelper(prefixes),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var prefix = _step7.value;\n value = _resolve(readKey(prefix, prop), scopes);\n\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n}\n\nfunction _resolve(key, scopes) {\n var _iterator8 = _createForOfIteratorHelper(scopes),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var scope = _step8.value;\n\n if (!scope) {\n continue;\n }\n\n var value = scope[key];\n\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n}\n\nfunction getKeysFromAllScopes(target) {\n var keys = target._keys;\n\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes) {\n var set = new Set();\n\n var _iterator9 = _createForOfIteratorHelper(scopes),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var scope = _step9.value;\n\n var _iterator10 = _createForOfIteratorHelper(Object.keys(scope).filter(function (k) {\n return !k.startsWith('_');\n })),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var key = _step10.value;\n set.add(key);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n return Array.from(set);\n}\n\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n var iScale = meta.iScale;\n var _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'r' : _this$_parsing$key;\n var parsed = new Array(count);\n var i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n\n return parsed;\n}\n\nvar EPSILON = Number.EPSILON || 1e-14;\n\nvar getPoint = function getPoint(points, i) {\n return i < points.length && !points[i].skip && points[i];\n};\n\nvar getValueAxis = function getValueAxis(indexAxis) {\n return indexAxis === 'x' ? 'y' : 'x';\n};\n\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n var previous = firstPoint.skip ? middlePoint : firstPoint;\n var current = middlePoint;\n var next = afterPoint.skip ? middlePoint : afterPoint;\n var d01 = distanceBetweenPoints(current, previous);\n var d12 = distanceBetweenPoints(next, current);\n var s01 = d01 / (d01 + d12);\n var s12 = d12 / (d01 + d12); // If all points are the same, s01 & s02 will be inf\n\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n var fa = t * s01; // scaling factor for triangle Ta\n\n var fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */\n\n\nfunction monotoneAdjust(points, deltaK, mK) {\n var pointsLen = points.length;\n var alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n var pointAfter = getPoint(points, 0);\n\n for (var i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points, mK) {\n var indexAxis = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n var valueAxis = getValueAxis(indexAxis);\n var pointsLen = points.length;\n var delta, pointBefore, pointCurrent;\n var pointAfter = getPoint(points, 0);\n\n for (var i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n var iPixel = pointCurrent[indexAxis];\n var vPixel = pointCurrent[valueAxis];\n\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[\"cp1\".concat(indexAxis)] = iPixel - delta;\n pointCurrent[\"cp1\".concat(valueAxis)] = vPixel - delta * mK[i];\n }\n\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[\"cp2\".concat(indexAxis)] = iPixel + delta;\n pointCurrent[\"cp2\".concat(valueAxis)] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\n\n\nfunction splineCurveMonotone(points) {\n var indexAxis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n var valueAxis = getValueAxis(indexAxis);\n var pointsLen = points.length;\n var deltaK = Array(pointsLen).fill(0);\n var mK = Array(pointsLen); // Calculate slopes (deltaK) and initialize tangents (mK)\n\n var i, pointBefore, pointCurrent;\n var pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n var slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis]; // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points, area) {\n var i, ilen, point, inArea, inAreaPrev;\n\n var inAreaNext = _isPointInArea(points[0], area);\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n\n if (!inArea) {\n continue;\n }\n\n point = points[i];\n\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */\n\n\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n var i, ilen, point, controlPoints; // Only consider points that are drawn in case the spanGaps option is used\n\n if (options.spanGaps) {\n points = points.filter(function (pt) {\n return !pt.skip;\n });\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n var prev = loop ? points[points.length - 1] : points[0];\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n* @private\n*/\n\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */\n\n\nfunction _getParentNode(domNode) {\n var parent = domNode.parentNode;\n\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\n\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n var valueInPixels;\n\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nvar getComputedStyle = function getComputedStyle(element) {\n return element.ownerDocument.defaultView.getComputedStyle(element, null);\n};\n\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nvar positions = ['top', 'right', 'bottom', 'left'];\n\nfunction getPositionedStyle(styles, style, suffix) {\n var result = {};\n suffix = suffix ? '-' + suffix : '';\n\n for (var i = 0; i < 4; i++) {\n var pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nvar useOffsetPos = function useOffsetPos(x, y, target) {\n return (x > 0 || y > 0) && (!target || !target.shadowRoot);\n};\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\n\n\nfunction getCanvasPosition(e, canvas) {\n var touches = e.touches;\n var source = touches && touches.length ? touches[0] : e;\n var offsetX = source.offsetX,\n offsetY = source.offsetY;\n var box = false;\n var x, y;\n\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n var rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n\n return {\n x: x,\n y: y,\n box: box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\n\nfunction getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n\n var canvas = chart.canvas,\n currentDevicePixelRatio = chart.currentDevicePixelRatio;\n var style = getComputedStyle(canvas);\n var borderBox = style.boxSizing === 'border-box';\n var paddings = getPositionedStyle(style, 'padding');\n var borders = getPositionedStyle(style, 'border', 'width');\n\n var _getCanvasPosition = getCanvasPosition(event, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\n\n var xOffset = paddings.left + (box && borders.left);\n var yOffset = paddings.top + (box && borders.top);\n var width = chart.width,\n height = chart.height;\n\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas, width, height) {\n var maxWidth, maxHeight;\n\n if (width === undefined || height === undefined) {\n var container = _getParentNode(canvas);\n\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n var rect = container.getBoundingClientRect(); // this is the border box of the container\n\n var containerStyle = getComputedStyle(container);\n var containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n var containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n\n return {\n width: width,\n height: height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nvar round1 = function round1(v) {\n return Math.round(v * 10) / 10;\n}; // eslint-disable-next-line complexity\n\n\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n var style = getComputedStyle(canvas);\n var margins = getPositionedStyle(style, 'margin');\n var maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n var maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n var containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n var width = containerSize.width,\n height = containerSize.height;\n\n if (style.boxSizing === 'content-box') {\n var borders = getPositionedStyle(style, 'border', 'width');\n var paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n var maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {\n width: width,\n height: height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\n\n\nfunction retinaScale(chart, forceRatio, forceStyle) {\n var pixelRatio = forceRatio || 1;\n var deviceHeight = Math.floor(chart.height * pixelRatio);\n var deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n var canvas = chart.canvas; // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = \"\".concat(chart.height, \"px\");\n canvas.style.width = \"\".concat(chart.width, \"px\");\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\n\n\nvar supportsEventListenerOptions = function () {\n var passiveSupported = false;\n\n try {\n var options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n\n };\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {// continue regardless of error\n }\n\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\n\nfunction readUsedSize(element, property) {\n var value = getStyle(element, property);\n var matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n/**\n * @private\n */\n\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */\n\n\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */\n\n\nfunction _bezierInterpolation(p1, p2, t, mode) {\n var cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n var cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n\n var a = _pointInLine(p1, cp1, t);\n\n var b = _pointInLine(cp1, cp2, t);\n\n var c = _pointInLine(cp2, p2, t);\n\n var d = _pointInLine(a, b, t);\n\n var e = _pointInLine(b, c, t);\n\n return _pointInLine(d, e, t);\n}\n\nvar getRightToLeftAdapter = function getRightToLeftAdapter(rectX, width) {\n return {\n x: function x(_x) {\n return rectX + rectX + width - _x;\n },\n setWidth: function setWidth(w) {\n width = w;\n },\n textAlign: function textAlign(align) {\n if (align === 'center') {\n return align;\n }\n\n return align === 'right' ? 'left' : 'right';\n },\n xPlus: function xPlus(x, value) {\n return x - value;\n },\n leftForLtr: function leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\n\nvar getLeftToRightAdapter = function getLeftToRightAdapter() {\n return {\n x: function x(_x2) {\n return _x2;\n },\n setWidth: function setWidth(w) {},\n textAlign: function textAlign(align) {\n return align;\n },\n xPlus: function xPlus(x, value) {\n return x + value;\n },\n leftForLtr: function leftForLtr(x, _itemWidth) {\n return x;\n }\n };\n};\n\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nfunction overrideTextDirection(ctx, direction) {\n var style, original;\n\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\n\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n\n return {\n between: _isBetween,\n compare: function compare(a, b) {\n return a - b;\n },\n normalize: function normalize(x) {\n return x;\n }\n };\n}\n\nfunction normalizeSegment(_ref) {\n var start = _ref.start,\n end = _ref.end,\n count = _ref.count,\n loop = _ref.loop,\n style = _ref.style;\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style: style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n var property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n\n var _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n\n var count = points.length;\n var start = segment.start,\n end = segment.end,\n loop = segment.loop;\n var i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n\n start--;\n end--;\n }\n\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n\n return {\n start: start,\n end: end,\n loop: loop,\n style: segment.style\n };\n}\n\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n var property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n var count = points.length;\n\n var _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n\n var _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n\n var result = [];\n var inside = false;\n var subStart = null;\n var value, point, prevValue;\n\n var startIsBefore = function startIsBefore() {\n return between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n };\n\n var endIsBefore = function endIsBefore() {\n return compare(endBound, value) === 0 || between(endBound, prevValue, value);\n };\n\n var shouldStart = function shouldStart() {\n return inside || startIsBefore();\n };\n\n var shouldStop = function shouldStop() {\n return !inside || endIsBefore();\n };\n\n for (var i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop: loop,\n count: count,\n style: style\n }));\n subStart = null;\n }\n\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end: end,\n loop: loop,\n count: count,\n style: style\n }));\n }\n\n return result;\n}\n\nfunction _boundSegments(line, bounds) {\n var result = [];\n var segments = line.segments;\n\n for (var i = 0; i < segments.length; i++) {\n var sub = _boundSegment(segments[i], line.points, bounds);\n\n if (sub.length) {\n result.push.apply(result, _toConsumableArray(sub));\n }\n }\n\n return result;\n}\n\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n var start = 0;\n var end = count - 1;\n\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n while (start < count && points[start].skip) {\n start++;\n }\n\n start %= count;\n\n if (loop) {\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n end %= count;\n return {\n start: start,\n end: end\n };\n}\n\nfunction solidSegments(points, start, max, loop) {\n var count = points.length;\n var result = [];\n var last = start;\n var prev = points[start];\n var end;\n\n for (end = start + 1; end <= max; ++end) {\n var cur = points[end % count];\n\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop: loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n\n if (prev.skip) {\n start = end;\n }\n }\n\n prev = cur;\n }\n\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop: loop\n });\n }\n\n return result;\n}\n\nfunction _computeSegments(line, segmentOptions) {\n var points = line.points;\n var spanGaps = line.options.spanGaps;\n var count = points.length;\n\n if (!count) {\n return [];\n }\n\n var loop = !!line._loop;\n\n var _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n\n if (spanGaps === true) {\n return splitByStyles(line, [{\n start: start,\n end: end,\n loop: loop\n }], points, segmentOptions);\n }\n\n var max = end < start ? end + count : end;\n var completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n var chartContext = line._chart.getContext();\n\n var baseStyle = readStyle(line.options);\n var datasetIndex = line._datasetIndex,\n spanGaps = line.options.spanGaps;\n var count = points.length;\n var result = [];\n var prevStyle = baseStyle;\n var start = segments[0].start;\n var i = start;\n\n function addStyle(s, e, l, st) {\n var dir = spanGaps ? -1 : 1;\n\n if (s === e) {\n return;\n }\n\n s += count;\n\n while (points[s % count].skip) {\n s -= dir;\n }\n\n while (points[e % count].skip) {\n e += dir;\n }\n\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n\n var _iterator11 = _createForOfIteratorHelper(segments),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var segment = _step11.value;\n start = spanGaps ? start : segment.start;\n var prev = points[start % count];\n var style = void 0;\n\n for (i = start + 1; i <= segment.end; i++) {\n var pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex: datasetIndex\n })));\n\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n\n prev = pt;\n prevStyle = style;\n }\n\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n\n var cache = [];\n\n var replacer = function replacer(key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n\n if (!cache.includes(value)) {\n cache.push(value);\n }\n\n return cache.indexOf(value);\n };\n\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\n\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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 _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as _color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as _getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\n\nvar Animator = /*#__PURE__*/function () {\n function Animator() {\n _classCallCheck(this, Animator);\n\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n _createClass(Animator, [{\n key: \"_notify\",\n value: function _notify(chart, anims, date, type) {\n var callbacks = anims.listeners[type];\n var numSteps = anims.duration;\n callbacks.forEach(function (fn) {\n return fn({\n chart: chart,\n initial: anims.initial,\n numSteps: numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n });\n });\n }\n }, {\n key: \"_refresh\",\n value: function _refresh() {\n var _this = this;\n\n if (this._request) {\n return;\n }\n\n this._running = true;\n this._request = requestAnimFrame.call(window, function () {\n _this._update();\n\n _this._request = null;\n\n if (_this._running) {\n _this._refresh();\n }\n });\n }\n }, {\n key: \"_update\",\n value: function _update() {\n var _this2 = this;\n\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n var remaining = 0;\n\n this._charts.forEach(function (anims, chart) {\n if (!anims.running || !anims.items.length) {\n return;\n }\n\n var items = anims.items;\n var i = items.length - 1;\n var draw = false;\n var item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n\n _this2._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n\n _this2._notify(chart, anims, date, 'complete');\n\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n }, {\n key: \"_getAnims\",\n value: function _getAnims(chart) {\n var charts = this._charts;\n var anims = charts.get(chart);\n\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n\n return anims;\n }\n }, {\n key: \"listen\",\n value: function listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n }, {\n key: \"add\",\n value: function add(chart, items) {\n var _this$_getAnims$items;\n\n if (!items || !items.length) {\n return;\n }\n\n (_this$_getAnims$items = this._getAnims(chart).items).push.apply(_this$_getAnims$items, _toConsumableArray(items));\n }\n }, {\n key: \"has\",\n value: function has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n }, {\n key: \"start\",\n value: function start(chart) {\n var anims = this._charts.get(chart);\n\n if (!anims) {\n return;\n }\n\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce(function (acc, cur) {\n return Math.max(acc, cur._duration);\n }, 0);\n\n this._refresh();\n }\n }, {\n key: \"running\",\n value: function running(chart) {\n if (!this._running) {\n return false;\n }\n\n var anims = this._charts.get(chart);\n\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n\n return true;\n }\n }, {\n key: \"stop\",\n value: function stop(chart) {\n var anims = this._charts.get(chart);\n\n if (!anims || !anims.items.length) {\n return;\n }\n\n var items = anims.items;\n var i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n\n anims.items = [];\n\n this._notify(chart, anims, Date.now(), 'complete');\n }\n }, {\n key: \"remove\",\n value: function remove(chart) {\n return this._charts.delete(chart);\n }\n }]);\n\n return Animator;\n}();\n\nvar animator = /* #__PURE__ */new Animator();\nvar transparent = 'transparent';\nvar interpolators = {\n boolean: function boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color: function color(from, to, factor) {\n var c0 = _color(from || transparent);\n\n var c1 = c0.valid && _color(to || transparent);\n\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number: function number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nvar Animation = /*#__PURE__*/function () {\n function Animation(cfg, target, prop, to) {\n _classCallCheck(this, Animation);\n\n var currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n var from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || _typeof(from)];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n _createClass(Animation, [{\n key: \"active\",\n value: function active() {\n return this._active;\n }\n }, {\n key: \"update\",\n value: function update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n var currentValue = this._target[this._prop];\n var elapsed = date - this._start;\n var remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n\n this._notify(false);\n }\n }\n }, {\n key: \"tick\",\n value: function tick(date) {\n var elapsed = date - this._start;\n var duration = this._duration;\n var prop = this._prop;\n var from = this._from;\n var loop = this._loop;\n var to = this._to;\n var factor;\n this._active = from !== to && (loop || elapsed < duration);\n\n if (!this._active) {\n this._target[prop] = to;\n\n this._notify(true);\n\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n }, {\n key: \"wait\",\n value: function wait() {\n var promises = this._promises || (this._promises = []);\n return new Promise(function (res, rej) {\n promises.push({\n res: res,\n rej: rej\n });\n });\n }\n }, {\n key: \"_notify\",\n value: function _notify(resolved) {\n var method = resolved ? 'res' : 'rej';\n var promises = this._promises || [];\n\n for (var i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n }]);\n\n return Animation;\n}();\n\nvar Animations = /*#__PURE__*/function () {\n function Animations(chart, config) {\n _classCallCheck(this, Animations);\n\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n _createClass(Animations, [{\n key: \"configure\",\n value: function configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n var animationOptions = Object.keys(defaults.animation);\n var animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(function (key) {\n var cfg = config[key];\n\n if (!isObject(cfg)) {\n return;\n }\n\n var resolved = {};\n\n var _iterator = _createForOfIteratorHelper(animationOptions),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var option = _step.value;\n resolved[option] = cfg[option];\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach(function (prop) {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n }, {\n key: \"_animateOptions\",\n value: function _animateOptions(target, values) {\n var newOptions = values.options;\n var options = resolveTargetOptions(target, newOptions);\n\n if (!options) {\n return [];\n }\n\n var animations = this._createAnimations(options, newOptions);\n\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(function () {\n target.options = newOptions;\n }, function () {});\n }\n\n return animations;\n }\n }, {\n key: \"_createAnimations\",\n value: function _createAnimations(target, values) {\n var animatedProps = this._properties;\n var animations = [];\n var running = target.$animations || (target.$animations = {});\n var props = Object.keys(values);\n var date = Date.now();\n var i;\n\n for (i = props.length - 1; i >= 0; --i) {\n var prop = props[i];\n\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push.apply(animations, _toConsumableArray(this._animateOptions(target, values)));\n continue;\n }\n\n var value = values[prop];\n var animation = running[prop];\n var cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n\n return animations;\n }\n }, {\n key: \"update\",\n value: function update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n\n var animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n }]);\n\n return Animations;\n}();\n\nfunction awaitAll(animations, properties) {\n var running = [];\n var keys = Object.keys(properties);\n\n for (var i = 0; i < keys.length; i++) {\n var anim = animations[keys[i]];\n\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n\n var options = target.options;\n\n if (!options) {\n target.options = newOptions;\n return;\n }\n\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n var opts = scale && scale.options || {};\n var reverse = opts.reverse;\n var min = opts.min === undefined ? allowedOverflow : 0;\n var max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n\n var x = scaleClip(xScale, allowedOverflow);\n var y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n var t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n var keys = [];\n\n var metasets = chart._getSortedDatasetMetas(filterVisible);\n\n var i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n\n return keys;\n}\n\nfunction _applyStack(stack, value, dsIndex) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keys = stack.keys;\n var singleMode = options.mode === 'single';\n var i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n\n break;\n }\n\n otherValue = stack.values[datasetIndex];\n\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data) {\n var keys = Object.keys(data);\n var adata = new Array(keys.length);\n var i, ilen, key;\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n var stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return \"\".concat(indexScale.id, \".\").concat(valueScale.id, \".\").concat(meta.stack || meta.type);\n}\n\nfunction getUserBounds(scale) {\n var _scale$getUserBounds = scale.getUserBounds(),\n min = _scale$getUserBounds.min,\n max = _scale$getUserBounds.max,\n minDefined = _scale$getUserBounds.minDefined,\n maxDefined = _scale$getUserBounds.maxDefined;\n\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n var subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n var _iterator2 = _createForOfIteratorHelper(vScale.getMatchingVisibleMetas(type).reverse()),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var meta = _step2.value;\n var value = stack[meta.index];\n\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n var chart = controller.chart,\n meta = controller._cachedMeta;\n var stacks = chart._stacks || (chart._stacks = {});\n var iScale = meta.iScale,\n vScale = meta.vScale,\n datasetIndex = meta.index;\n var iAxis = iScale.axis;\n var vAxis = vScale.axis;\n var key = getStackKey(iScale, vScale, meta);\n var ilen = parsed.length;\n var stack;\n\n for (var i = 0; i < ilen; ++i) {\n var item = parsed[i];\n var _index = item[iAxis],\n value = item[vAxis];\n var itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, _index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n var visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n var scales = chart.scales;\n return Object.keys(scales).filter(function (key) {\n return scales[key].axis === axis;\n }).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index: index,\n mode: 'default',\n type: 'dataset'\n });\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element: element,\n index: index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n var datasetIndex = meta.controller.index;\n var axis = meta.vScale && meta.vScale.axis;\n\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n\n var _iterator3 = _createForOfIteratorHelper(items),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var parsed = _step3.value;\n var stacks = parsed._stacks;\n\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n\n delete stacks[axis][datasetIndex];\n\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}\n\nvar isDirectUpdateMode = function isDirectUpdateMode(mode) {\n return mode === 'reset' || mode === 'none';\n};\n\nvar cloneIfNotShared = function cloneIfNotShared(cached, shared) {\n return shared ? cached : Object.assign({}, cached);\n};\n\nvar createStack = function createStack(canStack, meta, chart) {\n return canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n };\n};\n\nvar DatasetController = /*#__PURE__*/function () {\n function DatasetController(chart, datasetIndex) {\n _classCallCheck(this, DatasetController);\n\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = (this instanceof DatasetController ? this.constructor : void 0).datasetElementType;\n this.dataElementType = (this instanceof DatasetController ? this.constructor : void 0).dataElementType;\n this.initialize();\n }\n\n _createClass(DatasetController, [{\n key: \"initialize\",\n value: function initialize() {\n var meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n }, {\n key: \"updateIndex\",\n value: function updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n\n this.index = datasetIndex;\n }\n }, {\n key: \"linkScales\",\n value: function linkScales() {\n var chart = this.chart;\n var meta = this._cachedMeta;\n var dataset = this.getDataset();\n\n var chooseId = function chooseId(axis, x, y, r) {\n return axis === 'x' ? x : axis === 'r' ? r : y;\n };\n\n var xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n var yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n var rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n var indexAxis = meta.indexAxis;\n var iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n var vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n }, {\n key: \"getDataset\",\n value: function getDataset() {\n return this.chart.data.datasets[this.index];\n }\n }, {\n key: \"getMeta\",\n value: function getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n }, {\n key: \"getScaleForId\",\n value: function getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n }, {\n key: \"_getOtherScale\",\n value: function _getOtherScale(scale) {\n var meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._update('reset');\n }\n }, {\n key: \"_destroy\",\n value: function _destroy() {\n var meta = this._cachedMeta;\n\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n }, {\n key: \"_dataCheck\",\n value: function _dataCheck() {\n var dataset = this.getDataset();\n var data = dataset.data || (dataset.data = []);\n var _data = this._data;\n\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n var meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n\n this._syncList = [];\n this._data = data;\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n }, {\n key: \"buildOrUpdateElements\",\n value: function buildOrUpdateElements(resetNewElements) {\n var meta = this._cachedMeta;\n var dataset = this.getDataset();\n var stackChanged = false;\n\n this._dataCheck();\n\n var oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n this._resyncElements(resetNewElements);\n\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n }, {\n key: \"configure\",\n value: function configure() {\n var config = this.chart.config;\n var scopeKeys = config.datasetScopeKeys(this._type);\n var scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n }, {\n key: \"parse\",\n value: function parse(start, count) {\n var meta = this._cachedMeta,\n data = this._data;\n var iScale = meta.iScale,\n _stacked = meta._stacked;\n var iAxis = iScale.axis;\n var sorted = start === 0 && count === data.length ? true : meta._sorted;\n var prev = start > 0 && meta._parsed[start - 1];\n var i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n var isNotInOrderComparedToPrev = function isNotInOrderComparedToPrev() {\n return cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n };\n\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n\n prev = cur;\n }\n }\n\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n }, {\n key: \"parsePrimitiveData\",\n value: function parsePrimitiveData(meta, data, start, count) {\n var iScale = meta.iScale,\n vScale = meta.vScale;\n var iAxis = iScale.axis;\n var vAxis = vScale.axis;\n var labels = iScale.getLabels();\n var singleScale = iScale === vScale;\n var parsed = new Array(count);\n var i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n var _parsed$i;\n\n index = i + start;\n parsed[i] = (_parsed$i = {}, _defineProperty(_parsed$i, iAxis, singleScale || iScale.parse(labels[index], index)), _defineProperty(_parsed$i, vAxis, vScale.parse(data[index], index)), _parsed$i);\n }\n\n return parsed;\n }\n }, {\n key: \"parseArrayData\",\n value: function parseArrayData(meta, data, start, count) {\n var xScale = meta.xScale,\n yScale = meta.yScale;\n var parsed = new Array(count);\n var i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n\n return parsed;\n }\n }, {\n key: \"parseObjectData\",\n value: function parseObjectData(meta, data, start, count) {\n var xScale = meta.xScale,\n yScale = meta.yScale;\n var _this$_parsing = this._parsing,\n _this$_parsing$xAxisK = _this$_parsing.xAxisKey,\n xAxisKey = _this$_parsing$xAxisK === void 0 ? 'x' : _this$_parsing$xAxisK,\n _this$_parsing$yAxisK = _this$_parsing.yAxisKey,\n yAxisKey = _this$_parsing$yAxisK === void 0 ? 'y' : _this$_parsing$yAxisK;\n var parsed = new Array(count);\n var i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n\n return parsed;\n }\n }, {\n key: \"getParsed\",\n value: function getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n }, {\n key: \"getDataElement\",\n value: function getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n }, {\n key: \"applyStack\",\n value: function applyStack(scale, parsed, mode) {\n var chart = this.chart;\n var meta = this._cachedMeta;\n var value = parsed[scale.axis];\n var stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return _applyStack(stack, value, meta.index, {\n mode: mode\n });\n }\n }, {\n key: \"updateRangeFromParsed\",\n value: function updateRangeFromParsed(range, scale, parsed, stack) {\n var parsedValue = parsed[scale.axis];\n var value = parsedValue === null ? NaN : parsedValue;\n var values = stack && parsed._stacks[scale.axis];\n\n if (stack && values) {\n stack.values = values;\n value = _applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n }, {\n key: \"getMinMax\",\n value: function getMinMax(scale, canStack) {\n var meta = this._cachedMeta;\n var _parsed = meta._parsed;\n var sorted = meta._sorted && scale === meta.iScale;\n var ilen = _parsed.length;\n\n var otherScale = this._getOtherScale(scale);\n\n var stack = createStack(canStack, meta, this.chart);\n var range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n\n var _getUserBounds = getUserBounds(otherScale),\n otherMin = _getUserBounds.min,\n otherMax = _getUserBounds.max;\n\n var i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n var otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n\n this.updateRangeFromParsed(range, scale, parsed, stack);\n\n if (sorted) {\n break;\n }\n }\n\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n\n return range;\n }\n }, {\n key: \"getAllParsedValues\",\n value: function getAllParsedValues(scale) {\n var parsed = this._cachedMeta._parsed;\n var values = [];\n var i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n\n return values;\n }\n }, {\n key: \"getMaxOverflow\",\n value: function getMaxOverflow() {\n return false;\n }\n }, {\n key: \"getLabelAndValue\",\n value: function getLabelAndValue(index) {\n var meta = this._cachedMeta;\n var iScale = meta.iScale;\n var vScale = meta.vScale;\n var parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n }, {\n key: \"_update\",\n value: function _update(mode) {\n var meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n }, {\n key: \"update\",\n value: function update(mode) {}\n }, {\n key: \"draw\",\n value: function draw() {\n var ctx = this._ctx;\n var chart = this.chart;\n var meta = this._cachedMeta;\n var elements = meta.data || [];\n var area = chart.chartArea;\n var active = [];\n var start = this._drawStart || 0;\n var count = this._drawCount || elements.length - start;\n var drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n var i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n var element = elements[i];\n\n if (element.hidden) {\n continue;\n }\n\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n }, {\n key: \"getStyle\",\n value: function getStyle(index, active) {\n var mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n }, {\n key: \"getContext\",\n value: function getContext(index, active, mode) {\n var dataset = this.getDataset();\n var context;\n\n if (index >= 0 && index < this._cachedMeta.data.length) {\n var element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n }, {\n key: \"resolveDatasetElementOptions\",\n value: function resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n }, {\n key: \"resolveDataElementOptions\",\n value: function resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n }, {\n key: \"_resolveElementOptions\",\n value: function _resolveElementOptions(elementType) {\n var _this3 = this;\n\n var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var index = arguments.length > 2 ? arguments[2] : undefined;\n var active = mode === 'active';\n var cache = this._cachedDataOpts;\n var cacheKey = elementType + '-' + mode;\n var cached = cache[cacheKey];\n var sharing = this.enableOptionSharing && defined(index);\n\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n\n var config = this.chart.config;\n var scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n var prefixes = active ? [\"\".concat(elementType, \"Hover\"), 'hover', elementType, ''] : [elementType, ''];\n var scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n var names = Object.keys(defaults.elements[elementType]);\n\n var context = function context() {\n return _this3.getContext(index, active, mode);\n };\n\n var values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n }, {\n key: \"_resolveAnimations\",\n value: function _resolveAnimations(index, transition, active) {\n var chart = this.chart;\n var cache = this._cachedDataOpts;\n var cacheKey = \"animation-\".concat(transition);\n var cached = cache[cacheKey];\n\n if (cached) {\n return cached;\n }\n\n var options;\n\n if (chart.options.animation !== false) {\n var config = this.chart.config;\n var scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n var scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n\n var animations = new Animations(chart, options && options.animations);\n\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n\n return animations;\n }\n }, {\n key: \"getSharedOptions\",\n value: function getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n }, {\n key: \"includeOptions\",\n value: function includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n }, {\n key: \"_getSharedOptions\",\n value: function _getSharedOptions(start, mode) {\n var firstOpts = this.resolveDataElementOptions(start, mode);\n var previouslySharedOptions = this._sharedOptions;\n var sharedOptions = this.getSharedOptions(firstOpts);\n var includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions: sharedOptions,\n includeOptions: includeOptions\n };\n }\n }, {\n key: \"updateElement\",\n value: function updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n }, {\n key: \"updateSharedOptions\",\n value: function updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n }, {\n key: \"_setStyle\",\n value: function _setStyle(element, index, mode, active) {\n element.active = active;\n var options = this.getStyle(index, active);\n\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n }, {\n key: \"removeHoverStyle\",\n value: function removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n }, {\n key: \"setHoverStyle\",\n value: function setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n }, {\n key: \"_removeDatasetHoverStyle\",\n value: function _removeDatasetHoverStyle() {\n var element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n }, {\n key: \"_setDatasetHoverStyle\",\n value: function _setDatasetHoverStyle() {\n var element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n }, {\n key: \"_resyncElements\",\n value: function _resyncElements(resetNewElements) {\n var data = this._data;\n var elements = this._cachedMeta.data;\n\n var _iterator4 = _createForOfIteratorHelper(this._syncList),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _ref3 = _step4.value;\n\n var _ref2 = _slicedToArray(_ref3, 3);\n\n var method = _ref2[0];\n var arg1 = _ref2[1];\n var arg2 = _ref2[2];\n this[method](arg1, arg2);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n this._syncList = [];\n var numMeta = elements.length;\n var numData = data.length;\n var count = Math.min(numData, numMeta);\n\n if (count) {\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n }, {\n key: \"_insertElements\",\n value: function _insertElements(start, count) {\n var resetNewElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var meta = this._cachedMeta;\n var data = meta.data;\n var end = start + count;\n var i;\n\n var move = function move(arr) {\n arr.length += count;\n\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(element, start, count, mode) {}\n }, {\n key: \"_removeElements\",\n value: function _removeElements(start, count) {\n var meta = this._cachedMeta;\n\n if (this._parsing) {\n var removed = meta._parsed.splice(start, count);\n\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n\n meta.data.splice(start, count);\n }\n }, {\n key: \"_sync\",\n value: function _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n var _args2 = _slicedToArray(args, 3),\n method = _args2[0],\n arg1 = _args2[1],\n arg2 = _args2[2];\n\n this[method](arg1, arg2);\n }\n\n this.chart._dataChanges.push([this.index].concat(_toConsumableArray(args)));\n }\n }, {\n key: \"_onDataPush\",\n value: function _onDataPush() {\n var count = arguments.length;\n\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n }, {\n key: \"_onDataPop\",\n value: function _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n }, {\n key: \"_onDataShift\",\n value: function _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n }, {\n key: \"_onDataSplice\",\n value: function _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n\n var newCount = arguments.length - 2;\n\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n }, {\n key: \"_onDataUnshift\",\n value: function _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n }]);\n\n return DatasetController;\n}();\n\nDatasetController.defaults = {};\nDatasetController.datasetElementType = null;\nDatasetController.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n var visibleMetas = scale.getMatchingVisibleMetas(type);\n var values = [];\n\n for (var i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n\n scale._cache.$bar = _arrayUnique(values.sort(function (a, b) {\n return a - b;\n }));\n }\n\n return scale._cache.$bar;\n}\n\nfunction computeMinSampleSize(meta) {\n var scale = meta.iScale;\n var values = getAllScaleValues(scale, meta.type);\n var min = scale._length;\n var i, ilen, curr, prev;\n\n var updateMinAndPrev = function updateMinAndPrev() {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n var thickness = options.barThickness;\n var size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio: ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\n\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n var pixels = ruler.pixels;\n var curr = pixels[index];\n var prev = index > 0 ? pixels[index - 1] : null;\n var next = index < pixels.length - 1 ? pixels[index + 1] : null;\n var percent = options.categoryPercentage;\n\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n next = curr + curr - prev;\n }\n\n var start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n var size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start: start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n var startValue = vScale.parse(entry[0], i);\n var endValue = vScale.parse(entry[1], i);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n var barStart = min;\n var barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart: barStart,\n barEnd: barEnd,\n start: startValue,\n end: endValue,\n min: min,\n max: max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n var iScale = meta.iScale;\n var vScale = meta.vScale;\n var labels = iScale.getLabels();\n var singleScale = iScale === vScale;\n var parsed = [];\n var i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n var reverse, start, end, top, bottom;\n\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n\n return {\n start: start,\n end: end,\n reverse: reverse,\n top: top,\n bottom: bottom\n };\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n var edge = options.borderSkipped;\n var res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n\n var _borderProps = borderProps(properties),\n start = _borderProps.start,\n end = _borderProps.end,\n reverse = _borderProps.reverse,\n top = _borderProps.top,\n bottom = _borderProps.bottom;\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, _ref4, ratio) {\n var inflateAmount = _ref4.inflateAmount;\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\n\nvar BarController = /*#__PURE__*/function (_DatasetController) {\n _inherits(BarController, _DatasetController);\n\n var _super = _createSuper(BarController);\n\n function BarController() {\n _classCallCheck(this, BarController);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(BarController, [{\n key: \"parsePrimitiveData\",\n value: function parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n }, {\n key: \"parseArrayData\",\n value: function parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n }, {\n key: \"parseObjectData\",\n value: function parseObjectData(meta, data, start, count) {\n var iScale = meta.iScale,\n vScale = meta.vScale;\n var _this$_parsing2 = this._parsing,\n _this$_parsing2$xAxis = _this$_parsing2.xAxisKey,\n xAxisKey = _this$_parsing2$xAxis === void 0 ? 'x' : _this$_parsing2$xAxis,\n _this$_parsing2$yAxis = _this$_parsing2.yAxisKey,\n yAxisKey = _this$_parsing2$yAxis === void 0 ? 'y' : _this$_parsing2$yAxis;\n var iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n var vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n var parsed = [];\n var i, ilen, item, obj;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n\n return parsed;\n }\n }, {\n key: \"updateRangeFromParsed\",\n value: function updateRangeFromParsed(range, scale, parsed, stack) {\n _get(_getPrototypeOf(BarController.prototype), \"updateRangeFromParsed\", this).call(this, range, scale, parsed, stack);\n\n var custom = parsed._custom;\n\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n }, {\n key: \"getMaxOverflow\",\n value: function getMaxOverflow() {\n return 0;\n }\n }, {\n key: \"getLabelAndValue\",\n value: function getLabelAndValue(index) {\n var meta = this._cachedMeta;\n var iScale = meta.iScale,\n vScale = meta.vScale;\n var parsed = this.getParsed(index);\n var custom = parsed._custom;\n var value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value: value\n };\n }\n }, {\n key: \"initialize\",\n value: function initialize() {\n this.enableOptionSharing = true;\n\n _get(_getPrototypeOf(BarController.prototype), \"initialize\", this).call(this);\n\n var meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(bars, start, count, mode) {\n var reset = mode === 'reset';\n var index = this.index,\n vScale = this._cachedMeta.vScale;\n var base = vScale.getBasePixel();\n var horizontal = vScale.isHorizontal();\n\n var ruler = this._getRuler();\n\n var _this$_getSharedOptio = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio.sharedOptions,\n includeOptions = _this$_getSharedOptio.includeOptions;\n\n for (var i = start; i < start + count; i++) {\n var parsed = this.getParsed(i);\n var vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base: base,\n head: base\n } : this._calculateBarValuePixels(i);\n\n var ipixels = this._calculateBarIndexPixels(i, ruler);\n\n var stack = (parsed._stacks || {})[vScale.axis];\n var properties = {\n horizontal: horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n\n var options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n }, {\n key: \"_getStacks\",\n value: function _getStacks(last, dataIndex) {\n var iScale = this._cachedMeta.iScale;\n var metasets = iScale.getMatchingVisibleMetas(this._type).filter(function (meta) {\n return meta.controller.options.grouped;\n });\n var stacked = iScale.options.stacked;\n var stacks = [];\n\n var skipNull = function skipNull(meta) {\n var parsed = meta.controller.getParsed(dataIndex);\n var val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n var _iterator5 = _createForOfIteratorHelper(metasets),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var meta = _step5.value;\n\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n\n if (meta.index === last) {\n break;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n }, {\n key: \"_getStackCount\",\n value: function _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n }, {\n key: \"_getStackIndex\",\n value: function _getStackIndex(datasetIndex, name, dataIndex) {\n var stacks = this._getStacks(datasetIndex, dataIndex);\n\n var index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n }, {\n key: \"_getRuler\",\n value: function _getRuler() {\n var opts = this.options;\n var meta = this._cachedMeta;\n var iScale = meta.iScale;\n var pixels = [];\n var i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n var barThickness = opts.barThickness;\n var min = barThickness || computeMinSampleSize(meta);\n return {\n min: min,\n pixels: pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n }, {\n key: \"_calculateBarValuePixels\",\n value: function _calculateBarValuePixels(index) {\n var _this$_cachedMeta = this._cachedMeta,\n vScale = _this$_cachedMeta.vScale,\n _stacked = _this$_cachedMeta._stacked,\n datasetIndex = _this$_cachedMeta.index,\n _this$options = this.options,\n baseValue = _this$options.base,\n minBarLength = _this$options.minBarLength;\n var actualBase = baseValue || 0;\n var parsed = this.getParsed(index);\n var custom = parsed._custom;\n var floating = isFloatBar(custom);\n var value = parsed[vScale.axis];\n var start = 0;\n var length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n var head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n\n start += value;\n }\n\n var startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n var base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n\n if (value === actualBase) {\n base -= size / 2;\n }\n\n var startPixel = vScale.getPixelForDecimal(0);\n var endPixel = vScale.getPixelForDecimal(1);\n var min = Math.min(startPixel, endPixel);\n var max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n var halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size: size,\n base: base,\n head: head,\n center: head + size / 2\n };\n }\n }, {\n key: \"_calculateBarIndexPixels\",\n value: function _calculateBarIndexPixels(index, ruler) {\n var scale = ruler.scale;\n var options = this.options;\n var skipNull = options.skipNull;\n var maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n var center, size;\n\n if (ruler.grouped) {\n var stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n var range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n var stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center: center,\n size: size\n };\n }\n }, {\n key: \"draw\",\n value: function draw() {\n var meta = this._cachedMeta;\n var vScale = meta.vScale;\n var rects = meta.data;\n var ilen = rects.length;\n var i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n }]);\n\n return BarController;\n}(DatasetController);\n\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n};\n\nvar BubbleController = /*#__PURE__*/function (_DatasetController2) {\n _inherits(BubbleController, _DatasetController2);\n\n var _super2 = _createSuper(BubbleController);\n\n function BubbleController() {\n _classCallCheck(this, BubbleController);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(BubbleController, [{\n key: \"initialize\",\n value: function initialize() {\n this.enableOptionSharing = true;\n\n _get(_getPrototypeOf(BubbleController.prototype), \"initialize\", this).call(this);\n }\n }, {\n key: \"parsePrimitiveData\",\n value: function parsePrimitiveData(meta, data, start, count) {\n var parsed = _get(_getPrototypeOf(BubbleController.prototype), \"parsePrimitiveData\", this).call(this, meta, data, start, count);\n\n for (var i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n\n return parsed;\n }\n }, {\n key: \"parseArrayData\",\n value: function parseArrayData(meta, data, start, count) {\n var parsed = _get(_getPrototypeOf(BubbleController.prototype), \"parseArrayData\", this).call(this, meta, data, start, count);\n\n for (var i = 0; i < parsed.length; i++) {\n var item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n\n return parsed;\n }\n }, {\n key: \"parseObjectData\",\n value: function parseObjectData(meta, data, start, count) {\n var parsed = _get(_getPrototypeOf(BubbleController.prototype), \"parseObjectData\", this).call(this, meta, data, start, count);\n\n for (var i = 0; i < parsed.length; i++) {\n var item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n\n return parsed;\n }\n }, {\n key: \"getMaxOverflow\",\n value: function getMaxOverflow() {\n var data = this._cachedMeta.data;\n var max = 0;\n\n for (var i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n\n return max > 0 && max;\n }\n }, {\n key: \"getLabelAndValue\",\n value: function getLabelAndValue(index) {\n var meta = this._cachedMeta;\n var labels = this.chart.data.labels || [];\n var xScale = meta.xScale,\n yScale = meta.yScale;\n var parsed = this.getParsed(index);\n var x = xScale.getLabelForValue(parsed.x);\n var y = yScale.getLabelForValue(parsed.y);\n var r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(points, start, count, mode) {\n var reset = mode === 'reset';\n var _this$_cachedMeta2 = this._cachedMeta,\n iScale = _this$_cachedMeta2.iScale,\n vScale = _this$_cachedMeta2.vScale;\n\n var _this$_getSharedOptio2 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio2.sharedOptions,\n includeOptions = _this$_getSharedOptio2.includeOptions;\n\n var iAxis = iScale.axis;\n var vAxis = vScale.axis;\n\n for (var i = start; i < start + count; i++) {\n var point = points[i];\n var parsed = !reset && this.getParsed(i);\n var properties = {};\n var iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n var vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n this.updateElement(point, i, properties, mode);\n }\n }\n }, {\n key: \"resolveDataElementOptions\",\n value: function resolveDataElementOptions(index, mode) {\n var parsed = this.getParsed(index);\n\n var values = _get(_getPrototypeOf(BubbleController.prototype), \"resolveDataElementOptions\", this).call(this, index, mode);\n\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n\n var radius = values.radius;\n\n if (mode !== 'active') {\n values.radius = 0;\n }\n\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n }]);\n\n return BubbleController;\n}(DatasetController);\n\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n var ratioX = 1;\n var ratioY = 1;\n var offsetX = 0;\n var offsetY = 0;\n\n if (circumference < TAU) {\n var startAngle = rotation;\n var endAngle = startAngle + circumference;\n var startX = Math.cos(startAngle);\n var startY = Math.sin(startAngle);\n var endX = Math.cos(endAngle);\n var endY = Math.sin(endAngle);\n\n var calcMax = function calcMax(angle, a, b) {\n return _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n };\n\n var calcMin = function calcMin(angle, a, b) {\n return _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n };\n\n var maxX = calcMax(0, startX, endX);\n var maxY = calcMax(HALF_PI, startY, endY);\n var minX = calcMin(PI, startX, endX);\n var minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n\n return {\n ratioX: ratioX,\n ratioY: ratioY,\n offsetX: offsetX,\n offsetY: offsetY\n };\n}\n\nvar DoughnutController = /*#__PURE__*/function (_DatasetController3) {\n _inherits(DoughnutController, _DatasetController3);\n\n var _super3 = _createSuper(DoughnutController);\n\n function DoughnutController(chart, datasetIndex) {\n var _this4;\n\n _classCallCheck(this, DoughnutController);\n\n _this4 = _super3.call(this, chart, datasetIndex);\n _this4.enableOptionSharing = true;\n _this4.innerRadius = undefined;\n _this4.outerRadius = undefined;\n _this4.offsetX = undefined;\n _this4.offsetY = undefined;\n return _this4;\n }\n\n _createClass(DoughnutController, [{\n key: \"linkScales\",\n value: function linkScales() {}\n }, {\n key: \"parse\",\n value: function parse(start, count) {\n var data = this.getDataset().data;\n var meta = this._cachedMeta;\n\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n var getter = function getter(i) {\n return +data[i];\n };\n\n if (isObject(data[start])) {\n var _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'value' : _this$_parsing$key;\n\n getter = function getter(i) {\n return +resolveObjectKey(data[i], key);\n };\n }\n\n var i, ilen;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n }, {\n key: \"_getRotation\",\n value: function _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n }, {\n key: \"_getCircumference\",\n value: function _getCircumference() {\n return toRadians(this.options.circumference);\n }\n }, {\n key: \"_getRotationExtents\",\n value: function _getRotationExtents() {\n var min = TAU;\n var max = -TAU;\n\n for (var i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n var controller = this.chart.getDatasetMeta(i).controller;\n\n var rotation = controller._getRotation();\n\n var circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min\n };\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var chart = this.chart;\n var chartArea = chart.chartArea;\n var meta = this._cachedMeta;\n var arcs = meta.data;\n var spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n var maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n var cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n\n var chartWeight = this._getRingWeight(this.index);\n\n var _this$_getRotationExt = this._getRotationExtents(),\n circumference = _this$_getRotationExt.circumference,\n rotation = _this$_getRotationExt.rotation;\n\n var _getRatioAndOffset = getRatioAndOffset(rotation, circumference, cutout),\n ratioX = _getRatioAndOffset.ratioX,\n ratioY = _getRatioAndOffset.ratioY,\n offsetX = _getRatioAndOffset.offsetX,\n offsetY = _getRatioAndOffset.offsetY;\n\n var maxWidth = (chartArea.width - spacing) / ratioX;\n var maxHeight = (chartArea.height - spacing) / ratioY;\n var maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n var outerRadius = toDimension(this.options.radius, maxRadius);\n var innerRadius = Math.max(outerRadius * cutout, 0);\n\n var radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n }, {\n key: \"_circumference\",\n value: function _circumference(i, reset) {\n var opts = this.options;\n var meta = this._cachedMeta;\n\n var circumference = this._getCircumference();\n\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(arcs, start, count, mode) {\n var reset = mode === 'reset';\n var chart = this.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var animationOpts = opts.animation;\n var centerX = (chartArea.left + chartArea.right) / 2;\n var centerY = (chartArea.top + chartArea.bottom) / 2;\n var animateScale = reset && animationOpts.animateScale;\n var innerRadius = animateScale ? 0 : this.innerRadius;\n var outerRadius = animateScale ? 0 : this.outerRadius;\n\n var _this$_getSharedOptio3 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio3.sharedOptions,\n includeOptions = _this$_getSharedOptio3.includeOptions;\n\n var startAngle = this._getRotation();\n\n var i;\n\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n var circumference = this._circumference(i, reset);\n\n var arc = arcs[i];\n var properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle: startAngle,\n endAngle: startAngle + circumference,\n circumference: circumference,\n outerRadius: outerRadius,\n innerRadius: innerRadius\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n }, {\n key: \"calculateTotal\",\n value: function calculateTotal() {\n var meta = this._cachedMeta;\n var metaData = meta.data;\n var total = 0;\n var i;\n\n for (i = 0; i < metaData.length; i++) {\n var value = meta._parsed[i];\n\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n }, {\n key: \"calculateCircumference\",\n value: function calculateCircumference(value) {\n var total = this._cachedMeta.total;\n\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n\n return 0;\n }\n }, {\n key: \"getLabelAndValue\",\n value: function getLabelAndValue(index) {\n var meta = this._cachedMeta;\n var chart = this.chart;\n var labels = chart.data.labels || [];\n var value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value: value\n };\n }\n }, {\n key: \"getMaxBorderWidth\",\n value: function getMaxBorderWidth(arcs) {\n var max = 0;\n var chart = this.chart;\n var i, ilen, meta, controller, options;\n\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n\n return max;\n }\n }, {\n key: \"getMaxOffset\",\n value: function getMaxOffset(arcs) {\n var max = 0;\n\n for (var i = 0, ilen = arcs.length; i < ilen; ++i) {\n var options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n\n return max;\n }\n }, {\n key: \"_getRingWeightOffset\",\n value: function _getRingWeightOffset(datasetIndex) {\n var ringWeightOffset = 0;\n\n for (var i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n }, {\n key: \"_getRingWeight\",\n value: function _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n }, {\n key: \"_getVisibleDatasetWeightTotal\",\n value: function _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n }]);\n\n return DoughnutController;\n}(DatasetController);\n\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n};\nDoughnutController.descriptors = {\n _scriptable: function _scriptable(name) {\n return name !== 'spacing';\n },\n _indexable: function _indexable(name) {\n return name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash');\n }\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels: function generateLabels(chart) {\n var data = chart.data;\n\n if (data.labels.length && data.datasets.length) {\n var _chart$legend$options2 = chart.legend.options.labels,\n pointStyle = _chart$legend$options2.pointStyle,\n color = _chart$legend$options2.color;\n return data.labels.map(function (label, i) {\n var meta = chart.getDatasetMeta(0);\n var style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n\n return [];\n }\n },\n onClick: function onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n};\n\nvar LineController = /*#__PURE__*/function (_DatasetController4) {\n _inherits(LineController, _DatasetController4);\n\n var _super4 = _createSuper(LineController);\n\n function LineController() {\n _classCallCheck(this, LineController);\n\n return _super4.apply(this, arguments);\n }\n\n _createClass(LineController, [{\n key: \"initialize\",\n value: function initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n\n _get(_getPrototypeOf(LineController.prototype), \"initialize\", this).call(this);\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var meta = this._cachedMeta;\n var line = meta.dataset,\n _meta$data = meta.data,\n points = _meta$data === void 0 ? [] : _meta$data,\n _dataset = meta._dataset;\n var animationsDisabled = this.chart._animationsDisabled;\n\n var _getStartAndCountOfVi = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi.start,\n count = _getStartAndCountOfVi.count;\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n var options = this.resolveDatasetElementOptions(mode);\n\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options: options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(points, start, count, mode) {\n var reset = mode === 'reset';\n var _this$_cachedMeta3 = this._cachedMeta,\n iScale = _this$_cachedMeta3.iScale,\n vScale = _this$_cachedMeta3.vScale,\n _stacked = _this$_cachedMeta3._stacked,\n _dataset = _this$_cachedMeta3._dataset;\n\n var _this$_getSharedOptio4 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio4.sharedOptions,\n includeOptions = _this$_getSharedOptio4.includeOptions;\n\n var iAxis = iScale.axis;\n var vAxis = vScale.axis;\n var _this$options2 = this.options,\n spanGaps = _this$options2.spanGaps,\n segment = _this$options2.segment;\n var maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n var directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n var end = start + count;\n var pointsCount = points.length;\n var prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (var i = 0; i < pointsCount; ++i) {\n var point = points[i];\n var properties = directUpdate ? point : {};\n\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n\n var parsed = this.getParsed(i);\n var nullData = isNullOrUndef(parsed[vAxis]);\n var iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n var vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n }\n }, {\n key: \"getMaxOverflow\",\n value: function getMaxOverflow() {\n var meta = this._cachedMeta;\n var dataset = meta.dataset;\n var border = dataset.options && dataset.options.borderWidth || 0;\n var data = meta.data || [];\n\n if (!data.length) {\n return border;\n }\n\n var firstPoint = data[0].size(this.resolveDataElementOptions(0));\n var lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n }, {\n key: \"draw\",\n value: function draw() {\n var meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n\n _get(_getPrototypeOf(LineController.prototype), \"draw\", this).call(this);\n }\n }]);\n\n return LineController;\n}(DatasetController);\n\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n};\n\nvar PolarAreaController = /*#__PURE__*/function (_DatasetController5) {\n _inherits(PolarAreaController, _DatasetController5);\n\n var _super5 = _createSuper(PolarAreaController);\n\n function PolarAreaController(chart, datasetIndex) {\n var _this5;\n\n _classCallCheck(this, PolarAreaController);\n\n _this5 = _super5.call(this, chart, datasetIndex);\n _this5.innerRadius = undefined;\n _this5.outerRadius = undefined;\n return _this5;\n }\n\n _createClass(PolarAreaController, [{\n key: \"getLabelAndValue\",\n value: function getLabelAndValue(index) {\n var meta = this._cachedMeta;\n var chart = this.chart;\n var labels = chart.data.labels || [];\n var value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value: value\n };\n }\n }, {\n key: \"parseObjectData\",\n value: function parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var arcs = this._cachedMeta.data;\n\n this._updateRadius();\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n }, {\n key: \"getMinMax\",\n value: function getMinMax() {\n var _this6 = this;\n\n var meta = this._cachedMeta;\n var range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach(function (element, index) {\n var parsed = _this6.getParsed(index).r;\n\n if (!isNaN(parsed) && _this6.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n }, {\n key: \"_updateRadius\",\n value: function _updateRadius() {\n var chart = this.chart;\n var chartArea = chart.chartArea;\n var opts = chart.options;\n var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n var outerRadius = Math.max(minSize / 2, 0);\n var innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n var radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(arcs, start, count, mode) {\n var reset = mode === 'reset';\n var chart = this.chart;\n var opts = chart.options;\n var animationOpts = opts.animation;\n var scale = this._cachedMeta.rScale;\n var centerX = scale.xCenter;\n var centerY = scale.yCenter;\n var datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n var angle = datasetStartAngle;\n var i;\n var defaultAngle = 360 / this.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n\n for (i = start; i < start + count; i++) {\n var arc = arcs[i];\n var startAngle = angle;\n\n var endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n\n var outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n var properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius: outerRadius,\n startAngle: startAngle,\n endAngle: endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n }, {\n key: \"countVisibleElements\",\n value: function countVisibleElements() {\n var _this7 = this;\n\n var meta = this._cachedMeta;\n var count = 0;\n meta.data.forEach(function (element, index) {\n if (!isNaN(_this7.getParsed(index).r) && _this7.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n }, {\n key: \"_computeAngle\",\n value: function _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n }]);\n\n return PolarAreaController;\n}(DatasetController);\n\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n }\n },\n indexAxis: 'r',\n startAngle: 0\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels: function generateLabels(chart) {\n var data = chart.data;\n\n if (data.labels.length && data.datasets.length) {\n var _chart$legend$options3 = chart.legend.options.labels,\n pointStyle = _chart$legend$options3.pointStyle,\n color = _chart$legend$options3.color;\n return data.labels.map(function (label, i) {\n var meta = chart.getDatasetMeta(0);\n var style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n\n return [];\n }\n },\n onClick: function onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nvar PieController = /*#__PURE__*/function (_DoughnutController) {\n _inherits(PieController, _DoughnutController);\n\n var _super6 = _createSuper(PieController);\n\n function PieController() {\n _classCallCheck(this, PieController);\n\n return _super6.apply(this, arguments);\n }\n\n return _createClass(PieController);\n}(DoughnutController);\n\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nvar RadarController = /*#__PURE__*/function (_DatasetController6) {\n _inherits(RadarController, _DatasetController6);\n\n var _super7 = _createSuper(RadarController);\n\n function RadarController() {\n _classCallCheck(this, RadarController);\n\n return _super7.apply(this, arguments);\n }\n\n _createClass(RadarController, [{\n key: \"getLabelAndValue\",\n value: function getLabelAndValue(index) {\n var vScale = this._cachedMeta.vScale;\n var parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n }, {\n key: \"parseObjectData\",\n value: function parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var meta = this._cachedMeta;\n var line = meta.dataset;\n var points = meta.data || [];\n var labels = meta.iScale.getLabels();\n line.points = points;\n\n if (mode !== 'resize') {\n var options = this.resolveDatasetElementOptions(mode);\n\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n\n var properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options: options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n\n this.updateElements(points, 0, points.length, mode);\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(points, start, count, mode) {\n var scale = this._cachedMeta.rScale;\n var reset = mode === 'reset';\n\n for (var i = start; i < start + count; i++) {\n var point = points[i];\n var options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n var pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n var x = reset ? scale.xCenter : pointPosition.x;\n var y = reset ? scale.yCenter : pointPosition.y;\n var properties = {\n x: x,\n y: y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options: options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n }]);\n\n return RadarController;\n}(DatasetController);\n\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n};\n\nvar ScatterController = /*#__PURE__*/function (_DatasetController7) {\n _inherits(ScatterController, _DatasetController7);\n\n var _super8 = _createSuper(ScatterController);\n\n function ScatterController() {\n _classCallCheck(this, ScatterController);\n\n return _super8.apply(this, arguments);\n }\n\n _createClass(ScatterController, [{\n key: \"getLabelAndValue\",\n value: function getLabelAndValue(index) {\n var meta = this._cachedMeta;\n var labels = this.chart.data.labels || [];\n var xScale = meta.xScale,\n yScale = meta.yScale;\n var parsed = this.getParsed(index);\n var x = xScale.getLabelForValue(parsed.x);\n var y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var meta = this._cachedMeta;\n var _meta$data2 = meta.data,\n points = _meta$data2 === void 0 ? [] : _meta$data2;\n var animationsDisabled = this.chart._animationsDisabled;\n\n var _getStartAndCountOfVi2 = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi2.start,\n count = _getStartAndCountOfVi2.count;\n\n this._drawStart = start;\n this._drawCount = count;\n\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n\n var line = meta.dataset,\n _dataset = meta._dataset;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n var options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options: options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n\n this.updateElements(points, start, count, mode);\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var showLine = this.options.showLine;\n\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n\n _get(_getPrototypeOf(ScatterController.prototype), \"addElements\", this).call(this);\n }\n }, {\n key: \"updateElements\",\n value: function updateElements(points, start, count, mode) {\n var reset = mode === 'reset';\n var _this$_cachedMeta4 = this._cachedMeta,\n iScale = _this$_cachedMeta4.iScale,\n vScale = _this$_cachedMeta4.vScale,\n _stacked = _this$_cachedMeta4._stacked,\n _dataset = _this$_cachedMeta4._dataset;\n var firstOpts = this.resolveDataElementOptions(start, mode);\n var sharedOptions = this.getSharedOptions(firstOpts);\n var includeOptions = this.includeOptions(mode, sharedOptions);\n var iAxis = iScale.axis;\n var vAxis = vScale.axis;\n var _this$options3 = this.options,\n spanGaps = _this$options3.spanGaps,\n segment = _this$options3.segment;\n var maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n var directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n var prevParsed = start > 0 && this.getParsed(start - 1);\n\n for (var i = start; i < start + count; ++i) {\n var point = points[i];\n var parsed = this.getParsed(i);\n var properties = directUpdate ? point : {};\n var nullData = isNullOrUndef(parsed[vAxis]);\n var iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n var vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n }, {\n key: \"getMaxOverflow\",\n value: function getMaxOverflow() {\n var meta = this._cachedMeta;\n var data = meta.data || [];\n\n if (!this.options.showLine) {\n var max = 0;\n\n for (var i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n\n return max > 0 && max;\n }\n\n var dataset = meta.dataset;\n var border = dataset.options && dataset.options.borderWidth || 0;\n\n if (!data.length) {\n return border;\n }\n\n var firstPoint = data[0].size(this.resolveDataElementOptions(0));\n var lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n }]);\n\n return ScatterController;\n}(DatasetController);\n\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\nvar controllers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n BarController: BarController,\n BubbleController: BubbleController,\n DoughnutController: DoughnutController,\n LineController: LineController,\n PieController: PieController,\n PolarAreaController: PolarAreaController,\n RadarController: RadarController,\n ScatterController: ScatterController\n});\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\n\n\nvar DateAdapterBase = /*#__PURE__*/function () {\n function DateAdapterBase(options) {\n _classCallCheck(this, DateAdapterBase);\n\n this.options = void 0;\n this.options = options || {};\n } // eslint-disable-next-line @typescript-eslint/no-empty-function\n\n\n _createClass(DateAdapterBase, [{\n key: \"init\",\n value: function init() {}\n }, {\n key: \"formats\",\n value: function formats() {\n return abstract();\n }\n }, {\n key: \"parse\",\n value: function parse() {\n return abstract();\n }\n }, {\n key: \"format\",\n value: function format() {\n return abstract();\n }\n }, {\n key: \"add\",\n value: function add() {\n return abstract();\n }\n }, {\n key: \"diff\",\n value: function diff() {\n return abstract();\n }\n }, {\n key: \"startOf\",\n value: function startOf() {\n return abstract();\n }\n }, {\n key: \"endOf\",\n value: function endOf() {\n return abstract();\n }\n }], [{\n key: \"override\",\n value:\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n function override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n }]);\n\n return DateAdapterBase;\n}();\n\nvar adapters = {\n _date: DateAdapterBase\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n var controller = metaset.controller,\n data = metaset.data,\n _sorted = metaset._sorted;\n var iScale = controller._cachedMeta.iScale;\n\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n var lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n var el = data[0];\n var range = typeof el.getRange === 'function' && el.getRange(axis);\n\n if (range) {\n var start = lookupMethod(data, axis, value - range);\n var end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n var metasets = chart.getSortedVisibleDatasetMetas();\n var value = position[axis];\n\n for (var i = 0, ilen = metasets.length; i < ilen; ++i) {\n var _metasets$i = metasets[i],\n _index2 = _metasets$i.index,\n data = _metasets$i.data;\n\n var _binarySearch = binarySearch(metasets[i], axis, value, intersect),\n lo = _binarySearch.lo,\n hi = _binarySearch.hi;\n\n for (var j = lo; j <= hi; ++j) {\n var element = data[j];\n\n if (!element.skip) {\n handler(element, _index2, j);\n }\n }\n }\n}\n\nfunction getDistanceMetricForAxis(axis) {\n var useX = axis.indexOf('x') !== -1;\n var useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n var items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n var evaluationFunc = function evaluationFunc(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element: element,\n datasetIndex: datasetIndex,\n index: index\n });\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n var items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n var _element$getProps = element.getProps(['startAngle', 'endAngle'], useFinalPosition),\n startAngle = _element$getProps.startAngle,\n endAngle = _element$getProps.endAngle;\n\n var _getAngleFromPoint = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n }),\n angle = _getAngleFromPoint.angle;\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element: element,\n datasetIndex: datasetIndex,\n index: index\n });\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n var items = [];\n var distanceMetric = getDistanceMetricForAxis(axis);\n var minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n var inRange = element.inRange(position.x, position.y, useFinalPosition);\n\n if (intersect && !inRange) {\n return;\n }\n\n var center = element.getCenterPoint(useFinalPosition);\n var pointInArea = !!includeInvisible || chart.isPointInArea(center);\n\n if (!pointInArea && !inRange) {\n return;\n }\n\n var distance = distanceMetric(position, center);\n\n if (distance < minDistance) {\n items = [{\n element: element,\n datasetIndex: datasetIndex,\n index: index\n }];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element: element,\n datasetIndex: datasetIndex,\n index: index\n });\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n var items = [];\n var rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n var intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, function (element, datasetIndex, index) {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element: element,\n datasetIndex: datasetIndex,\n index: index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n if (intersect && !intersectsItem) {\n return [];\n }\n\n return items;\n}\n\nvar Interaction = {\n evaluateInteractionItems: evaluateInteractionItems,\n modes: {\n index: function index(chart, e, options, useFinalPosition) {\n var position = getRelativePosition(e, chart);\n var axis = options.axis || 'x';\n var includeInvisible = options.includeInvisible || false;\n var items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n var elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach(function (meta) {\n var index = items[0].index;\n var element = meta.data[index];\n\n if (element && !element.skip) {\n elements.push({\n element: element,\n datasetIndex: meta.index,\n index: index\n });\n }\n });\n return elements;\n },\n dataset: function dataset(chart, e, options, useFinalPosition) {\n var position = getRelativePosition(e, chart);\n var axis = options.axis || 'xy';\n var includeInvisible = options.includeInvisible || false;\n var items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n var datasetIndex = items[0].datasetIndex;\n var data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n\n for (var i = 0; i < data.length; ++i) {\n items.push({\n element: data[i],\n datasetIndex: datasetIndex,\n index: i\n });\n }\n }\n\n return items;\n },\n point: function point(chart, e, options, useFinalPosition) {\n var position = getRelativePosition(e, chart);\n var axis = options.axis || 'xy';\n var includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest: function nearest(chart, e, options, useFinalPosition) {\n var position = getRelativePosition(e, chart);\n var axis = options.axis || 'xy';\n var includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x: function x(chart, e, options, useFinalPosition) {\n var position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y: function y(chart, e, options, useFinalPosition) {\n var position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\nvar STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(function (v) {\n return v.pos === position;\n });\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(function (v) {\n return STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis;\n });\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort(function (a, b) {\n var v0 = reverse ? b : a;\n var v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n var layoutBoxes = [];\n var i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n var _box = box;\n pos = _box.position;\n var _box$options = _box.options;\n stack = _box$options.stack;\n var _box$options$stackWei = _box$options.stackWeight;\n stackWeight = _box$options$stackWei === void 0 ? 1 : _box$options$stackWei;\n layoutBoxes.push({\n index: i,\n box: box,\n pos: pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight: stackWeight\n });\n }\n\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n var stacks = {};\n\n var _iterator6 = _createForOfIteratorHelper(layouts),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var wrap = _step6.value;\n var stack = wrap.stack,\n pos = wrap.pos,\n stackWeight = wrap.stackWeight;\n\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n\n var _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n\n _stack.count++;\n _stack.weight += stackWeight;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return stacks;\n}\n\nfunction setLayoutDims(layouts, params) {\n var stacks = buildStacks(layouts);\n var vBoxMaxWidth = params.vBoxMaxWidth,\n hBoxMaxHeight = params.hBoxMaxHeight;\n var i, ilen, layout;\n\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n var fullSize = layout.box.fullSize;\n var stack = stacks[layout.stack];\n var factor = stack && layout.stackWeight / stack.weight;\n\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n var layoutBoxes = wrapBoxes(boxes);\n var fullSize = sortByWeight(layoutBoxes.filter(function (wrap) {\n return wrap.box.fullSize;\n }), true);\n var left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n var right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n var top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n var bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n var centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n var centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize: fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n var pos = layout.pos,\n box = layout.box;\n var maxPadding = chartArea.maxPadding;\n\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n\n var stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n var newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n var newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n var widthChanged = newWidth !== chartArea.w;\n var heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\n\nfunction handleMaxPadding(chartArea) {\n var maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n var change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n var maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n var margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(function (pos) {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n var refitBoxes = [];\n var i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n\n var _updateDims = updateDims(chartArea, params, layout, stacks),\n same = _updateDims.same,\n other = _updateDims.other;\n\n refit |= same && refitBoxes.length;\n changed = changed || other;\n\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n var userPadding = params.padding;\n var x = chartArea.x,\n y = chartArea.y;\n\n var _iterator7 = _createForOfIteratorHelper(boxes),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var layout = _step7.value;\n var box = layout.box;\n var stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n var weight = layout.stackWeight / stack.weight || 1;\n\n if (layout.horizontal) {\n var width = chartArea.w * weight;\n var height = stack.size || box.height;\n\n if (defined(stack.start)) {\n y = stack.start;\n }\n\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n var _height = chartArea.h * weight;\n\n var _width = stack.size || box.width;\n\n if (defined(stack.start)) {\n x = stack.start;\n }\n\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, _width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, _width, _height);\n }\n\n stack.start = x;\n stack.placed += _height;\n x = box.right;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\nvar layouts = {\n addBox: function addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n\n item._layers = item._layers || function () {\n return [{\n z: 0,\n draw: function draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n removeBox: function removeBox(chart, layoutItem) {\n var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure: function configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update: function update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n var padding = toPadding(chart.options.layout.padding);\n var availableWidth = Math.max(width - padding.width, 0);\n var availableHeight = Math.max(height - padding.height, 0);\n var boxes = buildLayoutBoxes(chart.boxes);\n var verticalBoxes = boxes.vertical;\n var horizontalBoxes = boxes.horizontal;\n each(chart.boxes, function (box) {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n var visibleVerticalBoxCount = verticalBoxes.reduce(function (total, wrap) {\n return wrap.box.options && wrap.box.options.display === false ? total : total + 1;\n }, 0) || 1;\n var params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding: padding,\n availableWidth: availableWidth,\n availableHeight: availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n var maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n var chartArea = Object.assign({\n maxPadding: maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n var stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, function (layout) {\n var box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\n\nvar BasePlatform = /*#__PURE__*/function () {\n function BasePlatform() {\n _classCallCheck(this, BasePlatform);\n }\n\n _createClass(BasePlatform, [{\n key: \"acquireContext\",\n value: function acquireContext(canvas, aspectRatio) {}\n }, {\n key: \"releaseContext\",\n value: function releaseContext(context) {\n return false;\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(chart, type, listener) {}\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(chart, type, listener) {}\n }, {\n key: \"getDevicePixelRatio\",\n value: function getDevicePixelRatio() {\n return 1;\n }\n }, {\n key: \"getMaximumSize\",\n value: function getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width: width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n }, {\n key: \"isAttached\",\n value: function isAttached(canvas) {\n return true;\n }\n }, {\n key: \"updateConfig\",\n value: function updateConfig(config) {}\n }]);\n\n return BasePlatform;\n}();\n\nvar BasicPlatform = /*#__PURE__*/function (_BasePlatform) {\n _inherits(BasicPlatform, _BasePlatform);\n\n var _super9 = _createSuper(BasicPlatform);\n\n function BasicPlatform() {\n _classCallCheck(this, BasicPlatform);\n\n return _super9.apply(this, arguments);\n }\n\n _createClass(BasicPlatform, [{\n key: \"acquireContext\",\n value: function acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n }, {\n key: \"updateConfig\",\n value: function updateConfig(config) {\n config.options.animation = false;\n }\n }]);\n\n return BasicPlatform;\n}(BasePlatform);\n\nvar EXPANDO_KEY = '$chartjs';\nvar EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nvar isNullOrEmpty = function isNullOrEmpty(value) {\n return value === null || value === '';\n};\n\nfunction initCanvas(canvas, aspectRatio) {\n var style = canvas.style;\n var renderHeight = canvas.getAttribute('height');\n var renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n var displayWidth = readUsedSize(canvas, 'width');\n\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n var displayHeight = readUsedSize(canvas, 'height');\n\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\nvar eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n var type = EVENT_TYPES[event.type] || event.type;\n\n var _getRelativePosition = getRelativePosition(event, chart),\n x = _getRelativePosition.x,\n y = _getRelativePosition.y;\n\n return {\n type: type,\n chart: chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n var _iterator8 = _createForOfIteratorHelper(nodeList),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var node = _step8.value;\n\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n var canvas = chart.canvas;\n var observer = new MutationObserver(function (entries) {\n var trigger = false;\n\n var _iterator9 = _createForOfIteratorHelper(entries),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var entry = _step9.value;\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n var canvas = chart.canvas;\n var observer = new MutationObserver(function (entries) {\n var trigger = false;\n\n var _iterator10 = _createForOfIteratorHelper(entries),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var entry = _step10.value;\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\n\nvar drpListeningCharts = new Map();\nvar oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n var dpr = window.devicePixelRatio;\n\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach(function (resize, chart) {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n var canvas = chart.canvas;\n\n var container = canvas && _getParentNode(canvas);\n\n if (!container) {\n return;\n }\n\n var resize = throttled(function (width, height) {\n var w = container.clientWidth;\n listener(width, height);\n\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n var observer = new ResizeObserver(function (entries) {\n var entry = entries[0];\n var width = entry.contentRect.width;\n var height = entry.contentRect.height;\n\n if (width === 0 && height === 0) {\n return;\n }\n\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n var canvas = chart.canvas;\n var proxy = throttled(function (event) {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\n\nvar DomPlatform = /*#__PURE__*/function (_BasePlatform2) {\n _inherits(DomPlatform, _BasePlatform2);\n\n var _super10 = _createSuper(DomPlatform);\n\n function DomPlatform() {\n _classCallCheck(this, DomPlatform);\n\n return _super10.apply(this, arguments);\n }\n\n _createClass(DomPlatform, [{\n key: \"acquireContext\",\n value: function acquireContext(canvas, aspectRatio) {\n var context = canvas && canvas.getContext && canvas.getContext('2d');\n\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n }, {\n key: \"releaseContext\",\n value: function releaseContext(context) {\n var canvas = context.canvas;\n\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n var initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(function (prop) {\n var value = initial[prop];\n\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n var style = initial.style || {};\n Object.keys(style).forEach(function (key) {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n var proxies = chart.$proxies || (chart.$proxies = {});\n var handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n var handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(chart, type) {\n var proxies = chart.$proxies || (chart.$proxies = {});\n var proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n var handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n var handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n }, {\n key: \"getDevicePixelRatio\",\n value: function getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n }, {\n key: \"getMaximumSize\",\n value: function getMaximumSize(canvas, width, height, aspectRatio) {\n return _getMaximumSize(canvas, width, height, aspectRatio);\n }\n }, {\n key: \"isAttached\",\n value: function isAttached(canvas) {\n var container = _getParentNode(canvas);\n\n return !!(container && container.isConnected);\n }\n }]);\n\n return DomPlatform;\n}(BasePlatform);\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n\n return DomPlatform;\n}\n\nvar Element = /*#__PURE__*/function () {\n function Element() {\n _classCallCheck(this, Element);\n\n this.x = void 0;\n this.y = void 0;\n this.active = false;\n this.options = void 0;\n this.$animations = void 0;\n }\n\n _createClass(Element, [{\n key: \"tooltipPosition\",\n value: function tooltipPosition(useFinalPosition) {\n var _this$getProps = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps.x,\n y = _this$getProps.y;\n\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"hasValue\",\n value: function hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n }, {\n key: \"getProps\",\n value: function getProps(props, final) {\n var _this8 = this;\n\n var anims = this.$animations;\n\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n\n var ret = {};\n props.forEach(function (prop) {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : _this8[prop];\n });\n return ret;\n }\n }]);\n\n return Element;\n}();\n\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nfunction autoSkip(scale, ticks) {\n var tickOpts = scale.options.ticks;\n var determinedMaxTicks = determineMaxTicks(scale);\n var ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n var majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n var numMajorIndices = majorIndices.length;\n var first = majorIndices[0];\n var last = majorIndices[numMajorIndices - 1];\n var newTicks = [];\n\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n var spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n var i, ilen;\n var avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n var offset = scale.options.offset;\n\n var tickLength = scale._tickSize();\n\n var maxScale = scale._length / tickLength + (offset ? 0 : 1);\n var maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n var evenMajorSpacing = getEvenSpacing(majorIndices);\n var spacing = ticks.length / ticksLimit;\n\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n var factors = _factorize(evenMajorSpacing);\n\n for (var i = 0, ilen = factors.length - 1; i < ilen; i++) {\n var factor = factors[i];\n\n if (factor > spacing) {\n return factor;\n }\n }\n\n return Math.max(spacing, 1);\n}\n\nfunction getMajorIndices(ticks) {\n var result = [];\n var i, ilen;\n\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n\n return result;\n}\n\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n var count = 0;\n var next = majorIndices[0];\n var i;\n spacing = Math.ceil(spacing);\n\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n var start = valueOrDefault(majorStart, 0);\n var end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n var count = 0;\n var length, i, next;\n spacing = Math.ceil(spacing);\n\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\nfunction getEvenSpacing(arr) {\n var len = arr.length;\n var i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n\n return diff;\n}\n\nvar reverseAlign = function reverseAlign(align) {\n return align === 'left' ? 'right' : align === 'right' ? 'left' : align;\n};\n\nvar offsetFromEdge = function offsetFromEdge(scale, edge, offset) {\n return edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\n};\n\nvar getTicksLimit = function getTicksLimit(ticksLength, maxTicksLimit) {\n return Math.min(maxTicksLimit || ticksLength, ticksLength);\n};\n\nfunction sample(arr, numItems) {\n var result = [];\n var increment = arr.length / numItems;\n var len = arr.length;\n var i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n\n return result;\n}\n\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n var length = scale.ticks.length;\n var validIndex = Math.min(index, length - 1);\n var start = scale._startPixel;\n var end = scale._endPixel;\n var epsilon = 1e-6;\n var lineValue = scale.getPixelForTick(validIndex);\n var offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n\n lineValue += validIndex < index ? offset : -offset;\n\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n\n return lineValue;\n}\n\nfunction garbageCollect(caches, length) {\n each(caches, function (cache) {\n var gc = cache.gc;\n var gcLen = gc.length / 2;\n var i;\n\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n\n gc.splice(0, gcLen);\n }\n });\n}\n\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n var font = toFont(options.font, fallback);\n var padding = toPadding(options.padding);\n var lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale: scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick: tick,\n index: index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n var ret = _toLeftRightCenter(align);\n\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n var top = scale.top,\n left = scale.left,\n bottom = scale.bottom,\n right = scale.right,\n chart = scale.chart;\n var chartArea = chart.chartArea,\n scales = chart.scales;\n var rotation = 0;\n var maxWidth, titleX, titleY;\n var height = bottom - top;\n var width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n var positionAxisID = Object.keys(position)[0];\n var value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n var _positionAxisID = Object.keys(position)[0];\n var _value = position[_positionAxisID];\n titleX = scales[_positionAxisID].getPixelForValue(_value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n\n return {\n titleX: titleX,\n titleY: titleY,\n maxWidth: maxWidth,\n rotation: rotation\n };\n}\n\nvar Scale = /*#__PURE__*/function (_Element) {\n _inherits(Scale, _Element);\n\n var _super11 = _createSuper(Scale);\n\n function Scale(cfg) {\n var _this9;\n\n _classCallCheck(this, Scale);\n\n _this9 = _super11.call(this);\n _this9.id = cfg.id;\n _this9.type = cfg.type;\n _this9.options = undefined;\n _this9.ctx = cfg.ctx;\n _this9.chart = cfg.chart;\n _this9.top = undefined;\n _this9.bottom = undefined;\n _this9.left = undefined;\n _this9.right = undefined;\n _this9.width = undefined;\n _this9.height = undefined;\n _this9._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n _this9.maxWidth = undefined;\n _this9.maxHeight = undefined;\n _this9.paddingTop = undefined;\n _this9.paddingBottom = undefined;\n _this9.paddingLeft = undefined;\n _this9.paddingRight = undefined;\n _this9.axis = undefined;\n _this9.labelRotation = undefined;\n _this9.min = undefined;\n _this9.max = undefined;\n _this9._range = undefined;\n _this9.ticks = [];\n _this9._gridLineItems = null;\n _this9._labelItems = null;\n _this9._labelSizes = null;\n _this9._length = 0;\n _this9._maxLength = 0;\n _this9._longestTextCache = {};\n _this9._startPixel = undefined;\n _this9._endPixel = undefined;\n _this9._reversePixels = false;\n _this9._userMax = undefined;\n _this9._userMin = undefined;\n _this9._suggestedMax = undefined;\n _this9._suggestedMin = undefined;\n _this9._ticksLength = 0;\n _this9._borderValue = 0;\n _this9._cache = {};\n _this9._dataLimitsCached = false;\n _this9.$context = undefined;\n return _this9;\n }\n\n _createClass(Scale, [{\n key: \"init\",\n value: function init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n }, {\n key: \"parse\",\n value: function parse(raw, index) {\n return raw;\n }\n }, {\n key: \"getUserBounds\",\n value: function getUserBounds() {\n var _userMin = this._userMin,\n _userMax = this._userMax,\n _suggestedMin = this._suggestedMin,\n _suggestedMax = this._suggestedMax;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n }, {\n key: \"getMinMax\",\n value: function getMinMax(canStack) {\n var _this$getUserBounds = this.getUserBounds(),\n min = _this$getUserBounds.min,\n max = _this$getUserBounds.max,\n minDefined = _this$getUserBounds.minDefined,\n maxDefined = _this$getUserBounds.maxDefined;\n\n var range;\n\n if (minDefined && maxDefined) {\n return {\n min: min,\n max: max\n };\n }\n\n var metas = this.getMatchingVisibleMetas();\n\n for (var i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n }, {\n key: \"getPadding\",\n value: function getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n }, {\n key: \"getTicks\",\n value: function getTicks() {\n return this.ticks;\n }\n }, {\n key: \"getLabels\",\n value: function getLabels() {\n var data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n }, {\n key: \"getLabelItems\",\n value: function getLabelItems() {\n var chartArea = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.chart.chartArea;\n\n var items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n\n return items;\n }\n }, {\n key: \"beforeLayout\",\n value: function beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n }, {\n key: \"beforeUpdate\",\n value: function beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n }, {\n key: \"update\",\n value: function update(maxWidth, maxHeight, margins) {\n var _this$options4 = this.options,\n beginAtZero = _this$options4.beginAtZero,\n grace = _this$options4.grace,\n tickOpts = _this$options4.ticks;\n var sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n var samplingEnabled = sampleSize < this.ticks.length;\n\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n }, {\n key: \"configure\",\n value: function configure() {\n var reversePixels = this.options.reverse;\n var startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n }, {\n key: \"afterUpdate\",\n value: function afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n }, {\n key: \"beforeSetDimensions\",\n value: function beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n }, {\n key: \"setDimensions\",\n value: function setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n }, {\n key: \"afterSetDimensions\",\n value: function afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n }, {\n key: \"_callHooks\",\n value: function _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n }, {\n key: \"beforeDataLimits\",\n value: function beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n }, {\n key: \"determineDataLimits\",\n value: function determineDataLimits() {}\n }, {\n key: \"afterDataLimits\",\n value: function afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n }, {\n key: \"beforeBuildTicks\",\n value: function beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n }, {\n key: \"buildTicks\",\n value: function buildTicks() {\n return [];\n }\n }, {\n key: \"afterBuildTicks\",\n value: function afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n }, {\n key: \"beforeTickToLabelConversion\",\n value: function beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n }, {\n key: \"generateTickLabels\",\n value: function generateTickLabels(ticks) {\n var tickOpts = this.options.ticks;\n var i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n }, {\n key: \"afterTickToLabelConversion\",\n value: function afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n }, {\n key: \"beforeCalculateLabelRotation\",\n value: function beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n }, {\n key: \"calculateLabelRotation\",\n value: function calculateLabelRotation() {\n var options = this.options;\n var tickOpts = options.ticks;\n var numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n var minRotation = tickOpts.minRotation || 0;\n var maxRotation = tickOpts.maxRotation;\n var labelRotation = minRotation;\n var tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n var labelSizes = this._getLabelSizes();\n\n var maxLabelWidth = labelSizes.widest.width;\n var maxLabelHeight = labelSizes.highest.height;\n\n var maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n }, {\n key: \"afterCalculateLabelRotation\",\n value: function afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n }, {\n key: \"afterAutoSkip\",\n value: function afterAutoSkip() {}\n }, {\n key: \"beforeFit\",\n value: function beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n }, {\n key: \"fit\",\n value: function fit() {\n var minSize = {\n width: 0,\n height: 0\n };\n var chart = this.chart,\n _this$options5 = this.options,\n tickOpts = _this$options5.ticks,\n titleOpts = _this$options5.title,\n gridOpts = _this$options5.grid;\n\n var display = this._isVisible();\n\n var isHorizontal = this.isHorizontal();\n\n if (display) {\n var titleHeight = getTitleHeight(titleOpts, chart.options.font);\n\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n if (tickOpts.display && this.ticks.length) {\n var _this$_getLabelSizes = this._getLabelSizes(),\n first = _this$_getLabelSizes.first,\n last = _this$_getLabelSizes.last,\n widest = _this$_getLabelSizes.widest,\n highest = _this$_getLabelSizes.highest;\n\n var tickPadding = tickOpts.padding * 2;\n var angleRadians = toRadians(this.labelRotation);\n var cos = Math.cos(angleRadians);\n var sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n var labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n var labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n }, {\n key: \"_calculatePadding\",\n value: function _calculatePadding(first, last, sin, cos) {\n var _this$options6 = this.options,\n _this$options6$ticks = _this$options6.ticks,\n align = _this$options6$ticks.align,\n padding = _this$options6$ticks.padding,\n position = _this$options6.position;\n var isRotated = this.labelRotation !== 0;\n var labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n var offsetLeft = this.getPixelForTick(0) - this.left;\n var offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n var paddingLeft = 0;\n var paddingRight = 0;\n\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n var paddingTop = last.height / 2;\n var paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n }, {\n key: \"_handleMargins\",\n value: function _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n }, {\n key: \"afterFit\",\n value: function afterFit() {\n callback(this.options.afterFit, [this]);\n }\n }, {\n key: \"isHorizontal\",\n value: function isHorizontal() {\n var _this$options7 = this.options,\n axis = _this$options7.axis,\n position = _this$options7.position;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n }, {\n key: \"isFullSize\",\n value: function isFullSize() {\n return this.options.fullSize;\n }\n }, {\n key: \"_convertTicksToLabels\",\n value: function _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n var i, ilen;\n\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n }, {\n key: \"_getLabelSizes\",\n value: function _getLabelSizes() {\n var labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n var sampleSize = this.options.ticks.sampleSize;\n var ticks = this.ticks;\n\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n }, {\n key: \"_computeLabelSizes\",\n value: function _computeLabelSizes(ticks, length, maxTicksLimit) {\n var ctx = this.ctx,\n caches = this._longestTextCache;\n var widths = [];\n var heights = [];\n var increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n var widestLabelSize = 0;\n var highestLabelSize = 0;\n var i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n\n garbageCollect(caches, length);\n var widest = widths.indexOf(widestLabelSize);\n var highest = heights.indexOf(highestLabelSize);\n\n var valueAt = function valueAt(idx) {\n return {\n width: widths[idx] || 0,\n height: heights[idx] || 0\n };\n };\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths: widths,\n heights: heights\n };\n }\n }, {\n key: \"getLabelForValue\",\n value: function getLabelForValue(value) {\n return value;\n }\n }, {\n key: \"getPixelForValue\",\n value: function getPixelForValue(value, index) {\n return NaN;\n }\n }, {\n key: \"getValueForPixel\",\n value: function getValueForPixel(pixel) {}\n }, {\n key: \"getPixelForTick\",\n value: function getPixelForTick(index) {\n var ticks = this.ticks;\n\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n\n return this.getPixelForValue(ticks[index].value);\n }\n }, {\n key: \"getPixelForDecimal\",\n value: function getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n var pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n }, {\n key: \"getDecimalForPixel\",\n value: function getDecimalForPixel(pixel) {\n var decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n }, {\n key: \"getBasePixel\",\n value: function getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n }, {\n key: \"getBaseValue\",\n value: function getBaseValue() {\n var min = this.min,\n max = this.max;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n }, {\n key: \"getContext\",\n value: function getContext(index) {\n var ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n var tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n }, {\n key: \"_tickSize\",\n value: function _tickSize() {\n var optionTicks = this.options.ticks;\n var rot = toRadians(this.labelRotation);\n var cos = Math.abs(Math.cos(rot));\n var sin = Math.abs(Math.sin(rot));\n\n var labelSizes = this._getLabelSizes();\n\n var padding = optionTicks.autoSkipPadding || 0;\n var w = labelSizes ? labelSizes.widest.width + padding : 0;\n var h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n }, {\n key: \"_isVisible\",\n value: function _isVisible() {\n var display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n }, {\n key: \"_computeGridLineItems\",\n value: function _computeGridLineItems(chartArea) {\n var axis = this.axis;\n var chart = this.chart;\n var options = this.options;\n var grid = options.grid,\n position = options.position,\n border = options.border;\n var offset = grid.offset;\n var isHorizontal = this.isHorizontal();\n var ticks = this.ticks;\n var ticksLength = ticks.length + (offset ? 1 : 0);\n var tl = getTickMarkLength(grid);\n var items = [];\n var borderOpts = border.setContext(this.getContext());\n var axisWidth = borderOpts.display ? borderOpts.width : 0;\n var axisHalfWidth = axisWidth / 2;\n\n var alignBorderValue = function alignBorderValue(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n\n var borderValue, i, lineValue, alignedLineValue;\n var tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n var positionAxisID = Object.keys(position)[0];\n var value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n var _positionAxisID2 = Object.keys(position)[0];\n var _value2 = position[_positionAxisID2];\n borderValue = alignBorderValue(this.chart.scales[_positionAxisID2].getPixelForValue(_value2));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n var limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n var step = Math.max(1, Math.ceil(ticksLength / limit));\n\n for (i = 0; i < ticksLength; i += step) {\n var context = this.getContext(i);\n var optsAtIndex = grid.setContext(context);\n var optsAtIndexBorder = border.setContext(context);\n var lineWidth = optsAtIndex.lineWidth;\n var lineColor = optsAtIndex.color;\n var borderDash = optsAtIndexBorder.dash || [];\n var borderDashOffset = optsAtIndexBorder.dashOffset;\n var tickWidth = optsAtIndex.tickWidth;\n var tickColor = optsAtIndex.tickColor;\n var tickBorderDash = optsAtIndex.tickBorderDash || [];\n var tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1: tx1,\n ty1: ty1,\n tx2: tx2,\n ty2: ty2,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n width: lineWidth,\n color: lineColor,\n borderDash: borderDash,\n borderDashOffset: borderDashOffset,\n tickWidth: tickWidth,\n tickColor: tickColor,\n tickBorderDash: tickBorderDash,\n tickBorderDashOffset: tickBorderDashOffset\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n }, {\n key: \"_computeLabelItems\",\n value: function _computeLabelItems(chartArea) {\n var axis = this.axis;\n var options = this.options;\n var position = options.position,\n optionTicks = options.ticks;\n var isHorizontal = this.isHorizontal();\n var ticks = this.ticks;\n var align = optionTicks.align,\n crossAlign = optionTicks.crossAlign,\n padding = optionTicks.padding,\n mirror = optionTicks.mirror;\n var tl = getTickMarkLength(options.grid);\n var tickAndPadding = tl + padding;\n var hTickAndPadding = mirror ? -padding : tickAndPadding;\n var rotation = -toRadians(this.labelRotation);\n var items = [];\n var i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n var textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n var ret = this._getYAxisLabelAlignment(tl);\n\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n var _ret = this._getYAxisLabelAlignment(tl);\n\n textAlign = _ret.textAlign;\n x = _ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n var positionAxisID = Object.keys(position)[0];\n var value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n var _positionAxisID3 = Object.keys(position)[0];\n var _value3 = position[_positionAxisID3];\n x = this.chart.scales[_positionAxisID3].getPixelForValue(_value3);\n }\n\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n var labelSizes = this._getLabelSizes();\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n var optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n var halfCount = lineCount / 2;\n var color = optsAtIndex.color;\n var strokeColor = optsAtIndex.textStrokeColor;\n var strokeWidth = optsAtIndex.textStrokeWidth;\n var tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n\n if (mirror) {\n textOffset *= -1;\n }\n\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n var backdrop = void 0;\n\n if (optsAtIndex.showLabelBackdrop) {\n var labelPadding = toPadding(optsAtIndex.backdropPadding);\n var height = labelSizes.heights[i];\n var width = labelSizes.widths[i];\n var top = textOffset - labelPadding.top;\n var left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n\n case 'bottom':\n top -= height;\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n\n case 'right':\n left -= width;\n break;\n\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n\n break;\n }\n\n backdrop = {\n left: left,\n top: top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n\n items.push({\n label: label,\n font: font,\n textOffset: textOffset,\n options: {\n rotation: rotation,\n color: color,\n strokeColor: strokeColor,\n strokeWidth: strokeWidth,\n textAlign: tickTextAlign,\n textBaseline: textBaseline,\n translation: [x, y],\n backdrop: backdrop\n }\n });\n }\n\n return items;\n }\n }, {\n key: \"_getXAxisLabelAlignment\",\n value: function _getXAxisLabelAlignment() {\n var _this$options8 = this.options,\n position = _this$options8.position,\n ticks = _this$options8.ticks;\n var rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n var align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n }, {\n key: \"_getYAxisLabelAlignment\",\n value: function _getYAxisLabelAlignment(tl) {\n var _this$options9 = this.options,\n position = _this$options9.position,\n _this$options9$ticks = _this$options9.ticks,\n crossAlign = _this$options9$ticks.crossAlign,\n mirror = _this$options9$ticks.mirror,\n padding = _this$options9$ticks.padding;\n\n var labelSizes = this._getLabelSizes();\n\n var tickAndPadding = tl + padding;\n var widest = labelSizes.widest.width;\n var textAlign;\n var x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {\n textAlign: textAlign,\n x: x\n };\n }\n }, {\n key: \"_computeLabelArea\",\n value: function _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n var chart = this.chart;\n var position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n }, {\n key: \"drawBackground\",\n value: function drawBackground() {\n var ctx = this.ctx,\n backgroundColor = this.options.backgroundColor,\n left = this.left,\n top = this.top,\n width = this.width,\n height = this.height;\n\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n }, {\n key: \"getLineWidthForValue\",\n value: function getLineWidthForValue(value) {\n var grid = this.options.grid;\n\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n\n var ticks = this.ticks;\n var index = ticks.findIndex(function (t) {\n return t.value === value;\n });\n\n if (index >= 0) {\n var opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n\n return 0;\n }\n }, {\n key: \"drawGrid\",\n value: function drawGrid(chartArea) {\n var grid = this.options.grid;\n var ctx = this.ctx;\n\n var items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n\n var i, ilen;\n\n var drawLine = function drawLine(p1, p2, style) {\n if (!style.width || !style.color) {\n return;\n }\n\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n var item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n }, {\n key: \"drawBorder\",\n value: function drawBorder() {\n var chart = this.chart,\n ctx = this.ctx,\n _this$options10 = this.options,\n border = _this$options10.border,\n grid = _this$options10.grid;\n var borderOpts = border.setContext(this.getContext());\n var axisWidth = border.display ? borderOpts.width : 0;\n\n if (!axisWidth) {\n return;\n }\n\n var lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n var borderValue = this._borderValue;\n var x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n }, {\n key: \"drawLabels\",\n value: function drawLabels(chartArea) {\n var optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n var ctx = this.ctx;\n\n var area = this._computeLabelArea();\n\n if (area) {\n clipArea(ctx, area);\n }\n\n var items = this.getLabelItems(chartArea);\n\n var _iterator11 = _createForOfIteratorHelper(items),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var item = _step11.value;\n var renderTextOptions = item.options;\n var tickFont = item.font;\n var label = item.label;\n var y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n }, {\n key: \"drawTitle\",\n value: function drawTitle() {\n var ctx = this.ctx,\n _this$options11 = this.options,\n position = _this$options11.position,\n title = _this$options11.title,\n reverse = _this$options11.reverse;\n\n if (!title.display) {\n return;\n }\n\n var font = toFont(title.font);\n var padding = toPadding(title.padding);\n var align = title.align;\n var offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n var _titleArgs = titleArgs(this, offset, position, align),\n titleX = _titleArgs.titleX,\n titleY = _titleArgs.titleY,\n maxWidth = _titleArgs.maxWidth,\n rotation = _titleArgs.rotation;\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth: maxWidth,\n rotation: rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n }, {\n key: \"draw\",\n value: function draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n }, {\n key: \"_layers\",\n value: function _layers() {\n var _this10 = this;\n\n var opts = this.options;\n var tz = opts.ticks && opts.ticks.z || 0;\n var gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n var bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: function draw(chartArea) {\n _this10.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: function draw(chartArea) {\n _this10.drawBackground();\n\n _this10.drawGrid(chartArea);\n\n _this10.drawTitle();\n }\n }, {\n z: bz,\n draw: function draw() {\n _this10.drawBorder();\n }\n }, {\n z: tz,\n draw: function draw(chartArea) {\n _this10.drawLabels(chartArea);\n }\n }];\n }\n }, {\n key: \"getMatchingVisibleMetas\",\n value: function getMatchingVisibleMetas(type) {\n var metas = this.chart.getSortedVisibleDatasetMetas();\n var axisID = this.axis + 'AxisID';\n var result = [];\n var i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n var meta = metas[i];\n\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n\n return result;\n }\n }, {\n key: \"_resolveTickFontOptions\",\n value: function _resolveTickFontOptions(index) {\n var opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n }, {\n key: \"_maxDigits\",\n value: function _maxDigits() {\n var fontSize = this._resolveTickFontOptions(0).lineHeight;\n\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n }]);\n\n return Scale;\n}(Element);\n\nvar TypedRegistry = /*#__PURE__*/function () {\n function TypedRegistry(type, scope, override) {\n _classCallCheck(this, TypedRegistry);\n\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n _createClass(TypedRegistry, [{\n key: \"isForType\",\n value: function isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n }, {\n key: \"register\",\n value: function register(item) {\n var proto = Object.getPrototypeOf(item);\n var parentScope;\n\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n\n var items = this.items;\n var id = item.id;\n var scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n }, {\n key: \"get\",\n value: function get(id) {\n return this.items[id];\n }\n }, {\n key: \"unregister\",\n value: function unregister(item) {\n var items = this.items;\n var id = item.id;\n var scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n }]);\n\n return TypedRegistry;\n}();\n\nfunction registerDefaults(item, scope, parentScope) {\n var itemDefaults = merge(Object.create(null), [parentScope ? defaults.get(parentScope) : {}, defaults.get(scope), item.defaults]);\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(function (property) {\n var propertyParts = property.split('.');\n var sourceName = propertyParts.pop();\n var sourceScope = [scope].concat(propertyParts).join('.');\n var parts = routes[property].split('.');\n var targetName = parts.pop();\n var targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nvar Registry = /*#__PURE__*/function () {\n function Registry() {\n _classCallCheck(this, Registry);\n\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n _createClass(Registry, [{\n key: \"add\",\n value: function add() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._each('register', args);\n }\n }, {\n key: \"remove\",\n value: function remove() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n this._each('unregister', args);\n }\n }, {\n key: \"addControllers\",\n value: function addControllers() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this._each('register', args, this.controllers);\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n this._each('register', args, this.elements);\n }\n }, {\n key: \"addPlugins\",\n value: function addPlugins() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n this._each('register', args, this.plugins);\n }\n }, {\n key: \"addScales\",\n value: function addScales() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n this._each('register', args, this.scales);\n }\n }, {\n key: \"getController\",\n value: function getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n }, {\n key: \"getElement\",\n value: function getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n }, {\n key: \"getPlugin\",\n value: function getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n }, {\n key: \"getScale\",\n value: function getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n }, {\n key: \"removeControllers\",\n value: function removeControllers() {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n this._each('unregister', args, this.controllers);\n }\n }, {\n key: \"removeElements\",\n value: function removeElements() {\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n\n this._each('unregister', args, this.elements);\n }\n }, {\n key: \"removePlugins\",\n value: function removePlugins() {\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n this._each('unregister', args, this.plugins);\n }\n }, {\n key: \"removeScales\",\n value: function removeScales() {\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n\n this._each('unregister', args, this.scales);\n }\n }, {\n key: \"_each\",\n value: function _each(method, args, typedRegistry) {\n var _this11 = this;\n\n _toConsumableArray(args).forEach(function (arg) {\n var reg = typedRegistry || _this11._getRegistryForType(arg);\n\n if (typedRegistry || reg.isForType(arg) || reg === _this11.plugins && arg.id) {\n _this11._exec(method, reg, arg);\n } else {\n each(arg, function (item) {\n var itemReg = typedRegistry || _this11._getRegistryForType(item);\n\n _this11._exec(method, itemReg, item);\n });\n }\n });\n }\n }, {\n key: \"_exec\",\n value: function _exec(method, registry, component) {\n var camelMethod = _capitalize(method);\n\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n }, {\n key: \"_getRegistryForType\",\n value: function _getRegistryForType(type) {\n for (var i = 0; i < this._typedRegistries.length; i++) {\n var reg = this._typedRegistries[i];\n\n if (reg.isForType(type)) {\n return reg;\n }\n }\n\n return this.plugins;\n }\n }, {\n key: \"_get\",\n value: function _get(id, typedRegistry, type) {\n var item = typedRegistry.get(id);\n\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n\n return item;\n }\n }]);\n\n return Registry;\n}();\n\nvar registry = /* #__PURE__ */new Registry();\n\nvar PluginService = /*#__PURE__*/function () {\n function PluginService() {\n _classCallCheck(this, PluginService);\n\n this._init = [];\n }\n\n _createClass(PluginService, [{\n key: \"notify\",\n value: function notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n\n this._notify(this._init, chart, 'install');\n }\n\n var descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n\n var result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n\n this._notify(this._init, chart, 'uninstall');\n }\n\n return result;\n }\n }, {\n key: \"_notify\",\n value: function _notify(descriptors, chart, hook, args) {\n args = args || {};\n\n var _iterator12 = _createForOfIteratorHelper(descriptors),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var descriptor = _step12.value;\n var plugin = descriptor.plugin;\n var method = plugin[hook];\n var params = [chart, args, descriptor.options];\n\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n return true;\n }\n }, {\n key: \"invalidate\",\n value: function invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n }, {\n key: \"_descriptors\",\n value: function _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n var descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n }, {\n key: \"_createDescriptors\",\n value: function _createDescriptors(chart, all) {\n var config = chart && chart.config;\n var options = valueOrDefault(config.options && config.options.plugins, {});\n var plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n }, {\n key: \"_notifyStateChanges\",\n value: function _notifyStateChanges(chart) {\n var previousDescriptors = this._oldCache || [];\n var descriptors = this._cache;\n\n var diff = function diff(a, b) {\n return a.filter(function (x) {\n return !b.some(function (y) {\n return x.plugin.id === y.plugin.id;\n });\n });\n };\n\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n }]);\n\n return PluginService;\n}();\n\nfunction allPlugins(config) {\n var localIds = {};\n var plugins = [];\n var keys = Object.keys(registry.plugins.items);\n\n for (var i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n var local = config.plugins || [];\n\n for (var _i2 = 0; _i2 < local.length; _i2++) {\n var plugin = local[_i2];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {\n plugins: plugins,\n localIds: localIds\n };\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n\n if (options === true) {\n return {};\n }\n\n return options;\n}\n\nfunction createDescriptors(chart, _ref5, options, all) {\n var plugins = _ref5.plugins,\n localIds = _ref5.localIds;\n var result = [];\n var context = chart.getContext();\n\n var _iterator13 = _createForOfIteratorHelper(plugins),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var plugin = _step13.value;\n var id = plugin.id;\n var opts = getOpts(options[id], all);\n\n if (opts === null) {\n continue;\n }\n\n result.push({\n plugin: plugin,\n options: pluginOpts(chart.config, {\n plugin: plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n\n return result;\n}\n\nfunction pluginOpts(config, _ref6, opts, context) {\n var plugin = _ref6.plugin,\n local = _ref6.local;\n var keys = config.pluginScopeKeys(plugin);\n var scopes = config.getOptionScopes(opts, keys);\n\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n var datasetDefaults = defaults.datasets[type] || {};\n var datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n var axis = id;\n\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nfunction determineAxis(id) {\n if (idMatchesAxis(id)) {\n return id;\n }\n\n for (var _len11 = arguments.length, scaleOptions = new Array(_len11 > 1 ? _len11 - 1 : 0), _key11 = 1; _key11 < _len11; _key11++) {\n scaleOptions[_key11 - 1] = arguments[_key11];\n }\n\n for (var _i3 = 0, _scaleOptions = scaleOptions; _i3 < _scaleOptions.length; _i3++) {\n var opts = _scaleOptions[_i3];\n var axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n\n if (axis) {\n return axis;\n }\n }\n\n throw new Error(\"Cannot determine type of '\".concat(id, \"' axis. Please provide 'axis' or 'position' option.\"));\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis: axis\n };\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n var boundDs = config.data.datasets.filter(function (d) {\n return d.xAxisID === id || d.yAxisID === id;\n });\n\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n var chartDefaults = overrides[config.type] || {\n scales: {}\n };\n var configScales = options.scales || {};\n var chartIndexAxis = getIndexAxis(config.type, options);\n var scales = Object.create(null);\n Object.keys(configScales).forEach(function (id) {\n var scaleConf = configScales[id];\n\n if (!isObject(scaleConf)) {\n return console.error(\"Invalid scale configuration for scale: \".concat(id));\n }\n\n if (scaleConf._proxy) {\n return console.warn(\"Ignoring resolver passed as options for scale: \".concat(id));\n }\n\n var axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n var defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n var defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{\n axis: axis\n }, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(function (dataset) {\n var type = dataset.type || config.type;\n var indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n var datasetDefaults = overrides[type] || {};\n var defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(function (defaultID) {\n var axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n var id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{\n axis: axis\n }, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(function (key) {\n var scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\n\nfunction initOptions(config) {\n var options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\n\nvar keyCache = new Map();\nvar keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n var keys = keyCache.get(cacheKey);\n\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n\n return keys;\n}\n\nvar addIfFound = function addIfFound(set, obj, key) {\n var opts = resolveObjectKey(obj, key);\n\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nvar Config = /*#__PURE__*/function () {\n function Config(config) {\n _classCallCheck(this, Config);\n\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n _createClass(Config, [{\n key: \"platform\",\n get: function get() {\n return this._config.platform;\n }\n }, {\n key: \"type\",\n get: function get() {\n return this._config.type;\n },\n set: function set(type) {\n this._config.type = type;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this._config.data;\n },\n set: function set(data) {\n this._config.data = initData(data);\n }\n }, {\n key: \"options\",\n get: function get() {\n return this._config.options;\n },\n set: function set(options) {\n this._config.options = options;\n }\n }, {\n key: \"plugins\",\n get: function get() {\n return this._config.plugins;\n }\n }, {\n key: \"update\",\n value: function update() {\n var config = this._config;\n this.clearCache();\n initOptions(config);\n }\n }, {\n key: \"clearCache\",\n value: function clearCache() {\n this._scopeCache.clear();\n\n this._resolverCache.clear();\n }\n }, {\n key: \"datasetScopeKeys\",\n value: function datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, function () {\n return [[\"datasets.\".concat(datasetType), '']];\n });\n }\n }, {\n key: \"datasetAnimationScopeKeys\",\n value: function datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(\"\".concat(datasetType, \".transition.\").concat(transition), function () {\n return [[\"datasets.\".concat(datasetType, \".transitions.\").concat(transition), \"transitions.\".concat(transition)], [\"datasets.\".concat(datasetType), '']];\n });\n }\n }, {\n key: \"datasetElementScopeKeys\",\n value: function datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(\"\".concat(datasetType, \"-\").concat(elementType), function () {\n return [[\"datasets.\".concat(datasetType, \".elements.\").concat(elementType), \"datasets.\".concat(datasetType), \"elements.\".concat(elementType), '']];\n });\n }\n }, {\n key: \"pluginScopeKeys\",\n value: function pluginScopeKeys(plugin) {\n var id = plugin.id;\n var type = this.type;\n return cachedKeys(\"\".concat(type, \"-plugin-\").concat(id), function () {\n return [[\"plugins.\".concat(id)].concat(_toConsumableArray(plugin.additionalOptionScopes || []))];\n });\n }\n }, {\n key: \"_cachedScopes\",\n value: function _cachedScopes(mainScope, resetCache) {\n var _scopeCache = this._scopeCache;\n\n var cache = _scopeCache.get(mainScope);\n\n if (!cache || resetCache) {\n cache = new Map();\n\n _scopeCache.set(mainScope, cache);\n }\n\n return cache;\n }\n }, {\n key: \"getOptionScopes\",\n value: function getOptionScopes(mainScope, keyLists, resetCache) {\n var options = this.options,\n type = this.type;\n\n var cache = this._cachedScopes(mainScope, resetCache);\n\n var cached = cache.get(keyLists);\n\n if (cached) {\n return cached;\n }\n\n var scopes = new Set();\n keyLists.forEach(function (keys) {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(function (key) {\n return addIfFound(scopes, mainScope, key);\n });\n }\n\n keys.forEach(function (key) {\n return addIfFound(scopes, options, key);\n });\n keys.forEach(function (key) {\n return addIfFound(scopes, overrides[type] || {}, key);\n });\n keys.forEach(function (key) {\n return addIfFound(scopes, defaults, key);\n });\n keys.forEach(function (key) {\n return addIfFound(scopes, descriptors, key);\n });\n });\n var array = Array.from(scopes);\n\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n\n return array;\n }\n }, {\n key: \"chartOptionScopes\",\n value: function chartOptionScopes() {\n var options = this.options,\n type = this.type;\n return [options, overrides[type] || {}, defaults.datasets[type] || {}, {\n type: type\n }, defaults, descriptors];\n }\n }, {\n key: \"resolveNamedOptions\",\n value: function resolveNamedOptions(scopes, names, context) {\n var prefixes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [''];\n var result = {\n $shared: true\n };\n\n var _getResolver = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver.resolver,\n subPrefixes = _getResolver.subPrefixes;\n\n var options = resolver;\n\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n var subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n var _iterator14 = _createForOfIteratorHelper(names),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var prop = _step14.value;\n result[prop] = options[prop];\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n\n return result;\n }\n }, {\n key: \"createResolver\",\n value: function createResolver(scopes, context) {\n var prefixes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [''];\n var descriptorDefaults = arguments.length > 3 ? arguments[3] : undefined;\n\n var _getResolver2 = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver2.resolver;\n\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n }]);\n\n return Config;\n}();\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n var cache = resolverCache.get(scopes);\n\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n\n var cacheKey = prefixes.join();\n var cached = cache.get(cacheKey);\n\n if (!cached) {\n var resolver = _createResolver(scopes, prefixes);\n\n cached = {\n resolver: resolver,\n subPrefixes: prefixes.filter(function (p) {\n return !p.toLowerCase().includes('hover');\n })\n };\n cache.set(cacheKey, cached);\n }\n\n return cached;\n}\n\nvar hasFunction = function hasFunction(value) {\n return isObject(value) && Object.getOwnPropertyNames(value).some(function (key) {\n return isFunction(value[key]);\n });\n};\n\nfunction needContext(proxy, names) {\n var _descriptors2 = _descriptors(proxy),\n isScriptable = _descriptors2.isScriptable,\n isIndexable = _descriptors2.isIndexable;\n\n var _iterator15 = _createForOfIteratorHelper(names),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var prop = _step15.value;\n var scriptable = isScriptable(prop);\n var indexable = isIndexable(prop);\n var value = (indexable || scriptable) && proxy[prop];\n\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n\n return false;\n}\n\nvar version = \"4.4.2\";\nvar KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\n\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\n\nfunction compare2Level(l1, l2) {\n return function (a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n var chart = context.chart;\n var animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n var chart = context.chart;\n var animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n\n if (item && item.canvas) {\n item = item.canvas;\n }\n\n return item;\n}\n\nvar instances = {};\n\nvar getChart = function getChart(key) {\n var canvas = getCanvas(key);\n return Object.values(instances).filter(function (c) {\n return c.canvas === canvas;\n }).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n var keys = Object.keys(obj);\n\n for (var _i4 = 0, _keys = keys; _i4 < _keys.length; _i4++) {\n var key = _keys[_i4];\n var intKey = +key;\n\n if (intKey >= start) {\n var value = obj[key];\n delete obj[key];\n\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n\n if (isClick) {\n return lastEvent;\n }\n\n return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n var xScale = meta.xScale,\n yScale = meta.yScale;\n\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n\n return chartArea;\n}\n\nvar Chart = /*#__PURE__*/function () {\n function Chart(item, userConfig) {\n var _this12 = this;\n\n _classCallCheck(this, Chart);\n\n var config = this.config = new Config(userConfig);\n var initialCanvas = getCanvas(item);\n var existingChart = getChart(initialCanvas);\n\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n\n var options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n var context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n var canvas = context && context.canvas;\n var height = canvas && canvas.height;\n var width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(function (mode) {\n return _this12.update(mode);\n }, options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n\n if (this.attached) {\n this.update();\n }\n }\n\n _createClass(Chart, [{\n key: \"aspectRatio\",\n get: function get() {\n var _this$options12 = this.options,\n aspectRatio = _this$options12.aspectRatio,\n maintainAspectRatio = _this$options12.maintainAspectRatio,\n width = this.width,\n height = this.height,\n _aspectRatio = this._aspectRatio;\n\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n\n return height ? width / height : null;\n }\n }, {\n key: \"data\",\n get: function get() {\n return this.config.data;\n },\n set: function set(data) {\n this.config.data = data;\n }\n }, {\n key: \"options\",\n get: function get() {\n return this._options;\n },\n set: function set(options) {\n this.config.options = options;\n }\n }, {\n key: \"registry\",\n get: function get() {\n return registry;\n }\n }, {\n key: \"_initialize\",\n value: function _initialize() {\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n animator.stop(this);\n return this;\n }\n }, {\n key: \"resize\",\n value: function resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width: width,\n height: height\n };\n }\n }\n }, {\n key: \"_resize\",\n value: function _resize(width, height) {\n var options = this.options;\n var canvas = this.canvas;\n var aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n var newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n var newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n var mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n }, {\n key: \"ensureScalesHaveIDs\",\n value: function ensureScalesHaveIDs() {\n var options = this.options;\n var scalesOptions = options.scales || {};\n each(scalesOptions, function (axisOptions, axisID) {\n axisOptions.id = axisID;\n });\n }\n }, {\n key: \"buildOrUpdateScales\",\n value: function buildOrUpdateScales() {\n var _this13 = this;\n\n var options = this.options;\n var scaleOpts = options.scales;\n var scales = this.scales;\n var updated = Object.keys(scales).reduce(function (obj, id) {\n obj[id] = false;\n return obj;\n }, {});\n var items = [];\n\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map(function (id) {\n var scaleOptions = scaleOpts[id];\n var axis = determineAxis(id, scaleOptions);\n var isRadial = axis === 'r';\n var isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n\n each(items, function (item) {\n var scaleOptions = item.options;\n var id = scaleOptions.id;\n var axis = determineAxis(id, scaleOptions);\n var scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n var scale = null;\n\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n var scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id: id,\n type: scaleType,\n ctx: _this13.ctx,\n chart: _this13\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n each(updated, function (hasUpdated, id) {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, function (scale) {\n layouts.configure(_this13, scale, scale.options);\n layouts.addBox(_this13, scale);\n });\n }\n }, {\n key: \"_updateMetasets\",\n value: function _updateMetasets() {\n var metasets = this._metasets;\n var numData = this.data.datasets.length;\n var numMeta = metasets.length;\n metasets.sort(function (a, b) {\n return a.index - b.index;\n });\n\n if (numMeta > numData) {\n for (var i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n\n metasets.splice(numData, numMeta - numData);\n }\n\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n }, {\n key: \"_removeUnreferencedMetasets\",\n value: function _removeUnreferencedMetasets() {\n var _this14 = this;\n\n var metasets = this._metasets,\n datasets = this.data.datasets;\n\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n\n metasets.forEach(function (meta, index) {\n if (datasets.filter(function (x) {\n return x === meta._dataset;\n }).length === 0) {\n _this14._destroyDatasetMeta(index);\n }\n });\n }\n }, {\n key: \"buildOrUpdateControllers\",\n value: function buildOrUpdateControllers() {\n var newControllers = [];\n var datasets = this.data.datasets;\n var i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n var dataset = datasets[i];\n var meta = this.getDatasetMeta(i);\n var type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n\n meta = this.getDatasetMeta(i);\n }\n\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n var ControllerClass = registry.getController(type);\n var _defaults$datasets$ty = defaults.datasets[type],\n datasetElementType = _defaults$datasets$ty.datasetElementType,\n dataElementType = _defaults$datasets$ty.dataElementType;\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n\n return newControllers;\n }\n }, {\n key: \"_resetElements\",\n value: function _resetElements() {\n var _this15 = this;\n\n each(this.data.datasets, function (dataset, datasetIndex) {\n _this15.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._resetElements();\n\n this.notifyPlugins('reset');\n }\n }, {\n key: \"update\",\n value: function update(mode) {\n var config = this.config;\n config.update();\n var options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n var animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n\n this._checkEventBindings();\n\n this._updateHiddenIndices();\n\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {\n mode: mode,\n cancelable: true\n }) === false) {\n return;\n }\n\n var newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n var minPadding = 0;\n\n for (var i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n var _this$getDatasetMeta = this.getDatasetMeta(i),\n controller = _this$getDatasetMeta.controller;\n\n var reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n\n this._updateLayout(minPadding);\n\n if (!animsDisabled) {\n each(newControllers, function (controller) {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n this.notifyPlugins('afterUpdate', {\n mode: mode\n });\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n var _active = this._active,\n _lastEvent = this._lastEvent;\n\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n }, {\n key: \"_updateScales\",\n value: function _updateScales() {\n var _this16 = this;\n\n each(this.scales, function (scale) {\n layouts.removeBox(_this16, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n }, {\n key: \"_checkEventBindings\",\n value: function _checkEventBindings() {\n var options = this.options;\n var existingEvents = new Set(Object.keys(this._listeners));\n var newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n }, {\n key: \"_updateHiddenIndices\",\n value: function _updateHiddenIndices() {\n var _hiddenIndices = this._hiddenIndices;\n var changes = this._getUniformDataChanges() || [];\n\n var _iterator16 = _createForOfIteratorHelper(changes),\n _step16;\n\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var _ref8 = _step16.value;\n var method = _ref8.method;\n var start = _ref8.start;\n var count = _ref8.count;\n var move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n }\n }, {\n key: \"_getUniformDataChanges\",\n value: function _getUniformDataChanges() {\n var _dataChanges = this._dataChanges;\n\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n var datasetCount = this.data.datasets.length;\n\n var makeSet = function makeSet(idx) {\n return new Set(_dataChanges.filter(function (c) {\n return c[0] === idx;\n }).map(function (c, i) {\n return i + ',' + c.splice(1).join(',');\n }));\n };\n\n var changeSet = makeSet(0);\n\n for (var i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n\n return Array.from(changeSet).map(function (c) {\n return c.split(',');\n }).map(function (a) {\n return {\n method: a[1],\n start: +a[2],\n count: +a[3]\n };\n });\n }\n }, {\n key: \"_updateLayout\",\n value: function _updateLayout(minPadding) {\n var _this17 = this;\n\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n var area = this.chartArea;\n var noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, function (box) {\n var _this17$_layers;\n\n if (noArea && box.position === 'chartArea') {\n return;\n }\n\n if (box.configure) {\n box.configure();\n }\n\n (_this17$_layers = _this17._layers).push.apply(_this17$_layers, _toConsumableArray(box._layers()));\n }, this);\n\n this._layers.forEach(function (item, index) {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n }, {\n key: \"_updateDatasets\",\n value: function _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode: mode,\n cancelable: true\n }) === false) {\n return;\n }\n\n for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (var _i5 = 0, _ilen = this.data.datasets.length; _i5 < _ilen; ++_i5) {\n this._updateDataset(_i5, isFunction(mode) ? mode({\n datasetIndex: _i5\n }) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {\n mode: mode\n });\n }\n }, {\n key: \"_updateDataset\",\n value: function _updateDataset(index, mode) {\n var meta = this.getDatasetMeta(index);\n var args = {\n meta: meta,\n index: index,\n mode: mode,\n cancelable: true\n };\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n }, {\n key: \"draw\",\n value: function draw() {\n var i;\n\n if (this._resizeBeforeDraw) {\n var _this$_resizeBeforeDr = this._resizeBeforeDraw,\n width = _this$_resizeBeforeDr.width,\n height = _this$_resizeBeforeDr.height;\n\n this._resize(width, height);\n\n this._resizeBeforeDraw = null;\n }\n\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n\n var layers = this._layers;\n\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n }, {\n key: \"_getSortedDatasetMetas\",\n value: function _getSortedDatasetMetas(filterVisible) {\n var metasets = this._sortedMetasets;\n var result = [];\n var i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n var meta = metasets[i];\n\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n }, {\n key: \"getSortedVisibleDatasetMetas\",\n value: function getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n }, {\n key: \"_drawDatasets\",\n value: function _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n\n var metasets = this.getSortedVisibleDatasetMetas();\n\n for (var i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n }, {\n key: \"_drawDataset\",\n value: function _drawDataset(meta) {\n var ctx = this.ctx;\n var clip = meta._clip;\n var useClip = !clip.disabled;\n var area = getDatasetArea(meta, this.chartArea);\n var args = {\n meta: meta,\n index: meta.index,\n cancelable: true\n };\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n\n meta.controller.draw();\n\n if (useClip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n }, {\n key: \"isPointInArea\",\n value: function isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n }, {\n key: \"getElementsAtEventForMode\",\n value: function getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n var method = Interaction.modes[mode];\n\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n }, {\n key: \"getDatasetMeta\",\n value: function getDatasetMeta(datasetIndex) {\n var dataset = this.data.datasets[datasetIndex];\n var metasets = this._metasets;\n var meta = metasets.filter(function (x) {\n return x && x._dataset === dataset;\n }).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n }, {\n key: \"getVisibleDatasetCount\",\n value: function getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n }, {\n key: \"isDatasetVisible\",\n value: function isDatasetVisible(datasetIndex) {\n var dataset = this.data.datasets[datasetIndex];\n\n if (!dataset) {\n return false;\n }\n\n var meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n }, {\n key: \"setDatasetVisibility\",\n value: function setDatasetVisibility(datasetIndex, visible) {\n var meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n }, {\n key: \"toggleDataVisibility\",\n value: function toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n }, {\n key: \"getDataVisibility\",\n value: function getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n }, {\n key: \"_updateVisibility\",\n value: function _updateVisibility(datasetIndex, dataIndex, visible) {\n var mode = visible ? 'show' : 'hide';\n var meta = this.getDatasetMeta(datasetIndex);\n\n var anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible: visible\n });\n this.update(function (ctx) {\n return ctx.datasetIndex === datasetIndex ? mode : undefined;\n });\n }\n }\n }, {\n key: \"hide\",\n value: function hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n }, {\n key: \"show\",\n value: function show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n }, {\n key: \"_destroyDatasetMeta\",\n value: function _destroyDatasetMeta(datasetIndex) {\n var meta = this._metasets[datasetIndex];\n\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n\n delete this._metasets[datasetIndex];\n }\n }, {\n key: \"_stop\",\n value: function _stop() {\n var i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.notifyPlugins('beforeDestroy');\n var canvas = this.canvas,\n ctx = this.ctx;\n\n this._stop();\n\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n }, {\n key: \"toBase64Image\",\n value: function toBase64Image() {\n var _this$canvas;\n\n return (_this$canvas = this.canvas).toDataURL.apply(_this$canvas, arguments);\n }\n }, {\n key: \"bindEvents\",\n value: function bindEvents() {\n this.bindUserEvents();\n\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n }, {\n key: \"bindUserEvents\",\n value: function bindUserEvents() {\n var _this18 = this;\n\n var listeners = this._listeners;\n var platform = this.platform;\n\n var _add = function _add(type, listener) {\n platform.addEventListener(_this18, type, listener);\n listeners[type] = listener;\n };\n\n var listener = function listener(e, x, y) {\n e.offsetX = x;\n e.offsetY = y;\n\n _this18._eventHandler(e);\n };\n\n each(this.options.events, function (type) {\n return _add(type, listener);\n });\n }\n }, {\n key: \"bindResponsiveEvents\",\n value: function bindResponsiveEvents() {\n var _this19 = this;\n\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n\n var listeners = this._responsiveListeners;\n var platform = this.platform;\n\n var _add = function _add(type, listener) {\n platform.addEventListener(_this19, type, listener);\n listeners[type] = listener;\n };\n\n var _remove = function _remove(type, listener) {\n if (listeners[type]) {\n platform.removeEventListener(_this19, type, listener);\n delete listeners[type];\n }\n };\n\n var listener = function listener(width, height) {\n if (_this19.canvas) {\n _this19.resize(width, height);\n }\n };\n\n var detached;\n\n var attached = function attached() {\n _remove('attach', attached);\n\n _this19.attached = true;\n\n _this19.resize();\n\n _add('resize', listener);\n\n _add('detach', detached);\n };\n\n detached = function detached() {\n _this19.attached = false;\n\n _remove('resize', listener);\n\n _this19._stop();\n\n _this19._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {\n var _this20 = this;\n\n each(this._listeners, function (listener, type) {\n _this20.platform.removeEventListener(_this20, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, function (listener, type) {\n _this20.platform.removeEventListener(_this20, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n }, {\n key: \"updateHoverStyle\",\n value: function updateHoverStyle(items, mode, enabled) {\n var prefix = enabled ? 'set' : 'remove';\n var meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n var controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n }, {\n key: \"getActiveElements\",\n value: function getActiveElements() {\n return this._active || [];\n }\n }, {\n key: \"setActiveElements\",\n value: function setActiveElements(activeElements) {\n var _this21 = this;\n\n var lastActive = this._active || [];\n var active = activeElements.map(function (_ref9) {\n var datasetIndex = _ref9.datasetIndex,\n index = _ref9.index;\n\n var meta = _this21.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex: datasetIndex,\n element: meta.data[index],\n index: index\n };\n });\n var changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n\n this._updateHoverStyles(active, lastActive);\n }\n }\n }, {\n key: \"notifyPlugins\",\n value: function notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n }, {\n key: \"isPluginEnabled\",\n value: function isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(function (p) {\n return p.plugin.id === pluginId;\n }).length === 1;\n }\n }, {\n key: \"_updateHoverStyles\",\n value: function _updateHoverStyles(active, lastActive, replay) {\n var hoverOptions = this.options.hover;\n\n var diff = function diff(a, b) {\n return a.filter(function (x) {\n return !b.some(function (y) {\n return x.datasetIndex === y.datasetIndex && x.index === y.index;\n });\n });\n };\n\n var deactivated = diff(lastActive, active);\n var activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n }, {\n key: \"_eventHandler\",\n value: function _eventHandler(e, replay) {\n var _this22 = this;\n\n var args = {\n event: e,\n replay: replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n\n var eventFilter = function eventFilter(plugin) {\n return (plugin.options.events || _this22.options.events).includes(e.native.type);\n };\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n var changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n }, {\n key: \"_handleEvent\",\n value: function _handleEvent(e, replay, inChartArea) {\n var _this$_active = this._active,\n lastActive = _this$_active === void 0 ? [] : _this$_active,\n options = this.options;\n var useFinalPosition = replay;\n\n var active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n\n var isClick = _isClickEvent(e);\n\n var lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n\n var changed = !_elementsEqual(active, lastActive);\n\n if (changed || replay) {\n this._active = active;\n\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n return changed;\n }\n }, {\n key: \"_getActiveElements\",\n value: function _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n return lastActive;\n }\n\n var hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n }], [{\n key: \"register\",\n value: function register() {\n registry.add.apply(registry, arguments);\n invalidatePlugins();\n }\n }, {\n key: \"unregister\",\n value: function unregister() {\n registry.remove.apply(registry, arguments);\n invalidatePlugins();\n }\n }]);\n\n return Chart;\n}();\n\nChart.defaults = defaults;\nChart.instances = instances;\nChart.overrides = overrides;\nChart.registry = registry;\nChart.version = version;\nChart.getChart = getChart;\n\nfunction invalidatePlugins() {\n return each(Chart.instances, function (chart) {\n return chart._plugins.invalidate();\n });\n}\n\nfunction clipArc(ctx, element, endAngle) {\n var startAngle = element.startAngle,\n pixelMargin = element.pixelMargin,\n x = element.x,\n y = element.y,\n outerRadius = element.outerRadius,\n innerRadius = element.innerRadius;\n var angleMargin = pixelMargin / outerRadius; // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n/**\n * Parse border radius from the provided options\n */\n\n\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n var o = toRadiusCorners(arc.options.borderRadius);\n var halfThickness = (outerRadius - innerRadius) / 2;\n var innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2); // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n\n var computeOuterLimit = function computeOuterLimit(val) {\n var outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */\n\n\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\n\n\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n var x = element.x,\n y = element.y,\n start = element.startAngle,\n pixelMargin = element.pixelMargin,\n innerR = element.innerRadius;\n var outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n var innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n var spacingOffset = 0;\n var alpha = end - start;\n\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n var noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n var noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n var avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n var adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n\n var beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n var angleOffset = (alpha - beta) / 2;\n var startAngle = start + angleOffset + spacingOffset;\n var endAngle = end - angleOffset - spacingOffset;\n\n var _parseBorderRadius$ = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle),\n outerStart = _parseBorderRadius$.outerStart,\n outerEnd = _parseBorderRadius$.outerEnd,\n innerStart = _parseBorderRadius$.innerStart,\n innerEnd = _parseBorderRadius$.innerEnd;\n\n var outerStartAdjustedRadius = outerRadius - outerStart;\n var outerEndAdjustedRadius = outerRadius - outerEnd;\n var outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n var outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n var innerStartAdjustedRadius = innerRadius + innerStart;\n var innerEndAdjustedRadius = innerRadius + innerEnd;\n var innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n var innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n var outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle); // The corner segment from point 2 to point 3\n\n if (outerEnd > 0) {\n var pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n } // The line from point 3 to point 4\n\n\n var p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y); // The corner segment from point 4 to point 5\n\n if (innerEnd > 0) {\n var _pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n\n ctx.arc(_pCenter.x, _pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n } // The inner arc from point 5 to point b to point 6\n\n\n var innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true); // The corner segment from point 6 to point 7\n\n if (innerStart > 0) {\n var _pCenter2 = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n\n ctx.arc(_pCenter2.x, _pCenter2.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n } // The line from point 7 to point 8\n\n\n var p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y); // The corner segment from point 8 to point 1\n\n if (outerStart > 0) {\n var _pCenter3 = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n\n ctx.arc(_pCenter3.x, _pCenter3.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n var outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n var outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n var outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n var outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n\n ctx.closePath();\n}\n\nfunction drawArc(ctx, element, offset, spacing, circular) {\n var fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference;\n var endAngle = element.endAngle;\n\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n\n for (var i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\n\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n var fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference,\n options = element.options;\n var borderWidth = options.borderWidth,\n borderJoinStyle = options.borderJoinStyle,\n borderDash = options.borderDash,\n borderDashOffset = options.borderDashOffset;\n var inner = options.borderAlign === 'inner';\n\n if (!borderWidth) {\n return;\n }\n\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n\n var endAngle = element.endAngle;\n\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n\n for (var i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\n\nvar ArcElement = /*#__PURE__*/function (_Element2) {\n _inherits(ArcElement, _Element2);\n\n var _super12 = _createSuper(ArcElement);\n\n function ArcElement(cfg) {\n var _this23;\n\n _classCallCheck(this, ArcElement);\n\n _this23 = _super12.call(this);\n _this23.circumference = void 0;\n _this23.endAngle = void 0;\n _this23.fullCircles = void 0;\n _this23.innerRadius = void 0;\n _this23.outerRadius = void 0;\n _this23.pixelMargin = void 0;\n _this23.startAngle = void 0;\n _this23.options = undefined;\n _this23.circumference = undefined;\n _this23.startAngle = undefined;\n _this23.endAngle = undefined;\n _this23.innerRadius = undefined;\n _this23.outerRadius = undefined;\n _this23.pixelMargin = 0;\n _this23.fullCircles = 0;\n\n if (cfg) {\n Object.assign(_assertThisInitialized(_this23), cfg);\n }\n\n return _this23;\n }\n\n _createClass(ArcElement, [{\n key: \"inRange\",\n value: function inRange(chartX, chartY, useFinalPosition) {\n var point = this.getProps(['x', 'y'], useFinalPosition);\n\n var _getAngleFromPoint2 = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n }),\n angle = _getAngleFromPoint2.angle,\n distance = _getAngleFromPoint2.distance;\n\n var _this$getProps2 = this.getProps(['startAngle', 'endAngle', 'innerRadius', 'outerRadius', 'circumference'], useFinalPosition),\n startAngle = _this$getProps2.startAngle,\n endAngle = _this$getProps2.endAngle,\n innerRadius = _this$getProps2.innerRadius,\n outerRadius = _this$getProps2.outerRadius,\n circumference = _this$getProps2.circumference;\n\n var rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n\n var _circumference = valueOrDefault(circumference, endAngle - startAngle);\n\n var betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n\n var withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n\n return betweenAngles && withinRadius;\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n var _this$getProps3 = this.getProps(['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius'], useFinalPosition),\n x = _this$getProps3.x,\n y = _this$getProps3.y,\n startAngle = _this$getProps3.startAngle,\n endAngle = _this$getProps3.endAngle,\n innerRadius = _this$getProps3.innerRadius,\n outerRadius = _this$getProps3.outerRadius;\n\n var _this$options13 = this.options,\n offset = _this$options13.offset,\n spacing = _this$options13.spacing;\n var halfAngle = (startAngle + endAngle) / 2;\n var halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n }, {\n key: \"tooltipPosition\",\n value: function tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var options = this.options,\n circumference = this.circumference;\n var offset = (options.offset || 0) / 4;\n var spacing = (options.spacing || 0) / 2;\n var circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n var halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n var fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n var radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n }]);\n\n return ArcElement;\n}(Element);\n\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\nArcElement.descriptors = {\n _scriptable: true,\n _indexable: function _indexable(name) {\n return name !== 'borderDash';\n }\n};\n\nfunction setStyle(ctx, options) {\n var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : options;\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var count = points.length;\n var _params$start = params.start,\n paramsStart = _params$start === void 0 ? 0 : _params$start,\n _params$end = params.end,\n paramsEnd = _params$end === void 0 ? count - 1 : _params$end;\n var segmentStart = segment.start,\n segmentEnd = segment.end;\n var start = Math.max(paramsStart, segmentStart);\n var end = Math.min(paramsEnd, segmentEnd);\n var outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count: count,\n start: start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\n\nfunction pathSegment(ctx, line, segment, params) {\n var points = line.points,\n options = line.options;\n\n var _pathVars = pathVars(points, segment, params),\n count = _pathVars.count,\n start = _pathVars.start,\n loop = _pathVars.loop,\n ilen = _pathVars.ilen;\n\n var lineMethod = getLineMethod(options);\n\n var _ref10 = params || {},\n _ref10$move = _ref10.move,\n move = _ref10$move === void 0 ? true : _ref10$move,\n reverse = _ref10.reverse;\n\n var i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\nfunction fastPathSegment(ctx, line, segment, params) {\n var points = line.points;\n\n var _pathVars2 = pathVars(points, segment, params),\n count = _pathVars2.count,\n start = _pathVars2.start,\n ilen = _pathVars2.ilen;\n\n var _ref11 = params || {},\n _ref11$move = _ref11.move,\n move = _ref11$move === void 0 ? true : _ref11$move,\n reverse = _ref11.reverse;\n\n var avgX = 0;\n var countX = 0;\n var i, point, prevX, minY, maxY, lastY;\n\n var pointIndex = function pointIndex(index) {\n return (start + (reverse ? ilen - index : index)) % count;\n };\n\n var drawX = function drawX() {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n continue;\n }\n\n var x = point.x;\n var y = point.y;\n var truncX = x | 0;\n\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n\n lastY = y;\n }\n\n drawX();\n}\n\nfunction _getSegmentMethod(line) {\n var opts = line.options;\n var borderDash = opts.borderDash && opts.borderDash.length;\n var useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\n\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n var path = line._path;\n\n if (!path) {\n path = line._path = new Path2D();\n\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n var segments = line.segments,\n options = line.options;\n\n var segmentMethod = _getSegmentMethod(line);\n\n var _iterator17 = _createForOfIteratorHelper(segments),\n _step17;\n\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var segment = _step17.value;\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n\n if (segmentMethod(ctx, line, segment, {\n start: start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n\n ctx.stroke();\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n}\n\nvar usePath2D = typeof Path2D === 'function';\n\nfunction _draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nvar LineElement = /*#__PURE__*/function (_Element3) {\n _inherits(LineElement, _Element3);\n\n var _super13 = _createSuper(LineElement);\n\n function LineElement(cfg) {\n var _this24;\n\n _classCallCheck(this, LineElement);\n\n _this24 = _super13.call(this);\n _this24.animated = true;\n _this24.options = undefined;\n _this24._chart = undefined;\n _this24._loop = undefined;\n _this24._fullLoop = undefined;\n _this24._path = undefined;\n _this24._points = undefined;\n _this24._segments = undefined;\n _this24._decimated = false;\n _this24._pointsUpdated = false;\n _this24._datasetIndex = undefined;\n\n if (cfg) {\n Object.assign(_assertThisInitialized(_this24), cfg);\n }\n\n return _this24;\n }\n\n _createClass(LineElement, [{\n key: \"updateControlPoints\",\n value: function updateControlPoints(chartArea, indexAxis) {\n var options = this.options;\n\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n var loop = options.spanGaps ? this._loop : this._fullLoop;\n\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n\n this._pointsUpdated = true;\n }\n }\n }, {\n key: \"points\",\n get: function get() {\n return this._points;\n },\n set: function set(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n }, {\n key: \"segments\",\n get: function get() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n }, {\n key: \"first\",\n value: function first() {\n var segments = this.segments;\n var points = this.points;\n return segments.length && points[segments[0].start];\n }\n }, {\n key: \"last\",\n value: function last() {\n var segments = this.segments;\n var points = this.points;\n var count = segments.length;\n return count && points[segments[count - 1].end];\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(point, property) {\n var options = this.options;\n var value = point[property];\n var points = this.points;\n\n var segments = _boundSegments(this, {\n property: property,\n start: value,\n end: value\n });\n\n if (!segments.length) {\n return;\n }\n\n var result = [];\n\n var _interpolate = _getInterpolationMethod(options);\n\n var i, ilen;\n\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n var _segments$i = segments[i],\n start = _segments$i.start,\n end = _segments$i.end;\n var p1 = points[start];\n var p2 = points[end];\n\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n\n var t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n\n var interpolated = _interpolate(p1, p2, t, options.stepped);\n\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n\n return result.length === 1 ? result[0] : result;\n }\n }, {\n key: \"pathSegment\",\n value: function pathSegment(ctx, segment, params) {\n var segmentMethod = _getSegmentMethod(this);\n\n return segmentMethod(ctx, this, segment, params);\n }\n }, {\n key: \"path\",\n value: function path(ctx, start, count) {\n var segments = this.segments;\n\n var segmentMethod = _getSegmentMethod(this);\n\n var loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n\n var _iterator18 = _createForOfIteratorHelper(segments),\n _step18;\n\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var segment = _step18.value;\n loop &= segmentMethod(ctx, this, segment, {\n start: start,\n end: start + count - 1\n });\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n\n return !!loop;\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, chartArea, start, count) {\n var options = this.options || {};\n var points = this.points || [];\n\n if (points.length && options.borderWidth) {\n ctx.save();\n\n _draw(ctx, this, start, count);\n\n ctx.restore();\n }\n\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n }]);\n\n return LineElement;\n}(Element);\n\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: function _indexable(name) {\n return name !== 'borderDash' && name !== 'fill';\n }\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n var options = el.options;\n\n var _el$getProps = el.getProps([axis], useFinalPosition),\n value = _el$getProps[axis];\n\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\n\nvar PointElement = /*#__PURE__*/function (_Element4) {\n _inherits(PointElement, _Element4);\n\n var _super14 = _createSuper(PointElement);\n\n /**\n * @type {any}\n */\n\n /**\n * @type {any}\n */\n function PointElement(cfg) {\n var _this25;\n\n _classCallCheck(this, PointElement);\n\n _this25 = _super14.call(this);\n _this25.parsed = void 0;\n _this25.skip = void 0;\n _this25.stop = void 0;\n _this25.options = undefined;\n _this25.parsed = undefined;\n _this25.skip = undefined;\n _this25.stop = undefined;\n\n if (cfg) {\n Object.assign(_assertThisInitialized(_this25), cfg);\n }\n\n return _this25;\n }\n\n _createClass(PointElement, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, useFinalPosition) {\n var options = this.options;\n\n var _this$getProps4 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps4.x,\n y = _this$getProps4.y;\n\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n }, {\n key: \"inXRange\",\n value: function inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n }, {\n key: \"inYRange\",\n value: function inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n var _this$getProps5 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps5.x,\n y = _this$getProps5.y;\n\n return {\n x: x,\n y: y\n };\n }\n }, {\n key: \"size\",\n value: function size(options) {\n options = options || this.options || {};\n var radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n var borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n }, {\n key: \"draw\",\n value: function draw(ctx, area) {\n var options = this.options;\n\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n }, {\n key: \"getRange\",\n value: function getRange() {\n var options = this.options || {}; // @ts-expect-error Fallbacks should never be hit in practice\n\n return options.radius + options.hitRadius;\n }\n }]);\n\n return PointElement;\n}(Element);\n\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n var _bar$getProps = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition),\n x = _bar$getProps.x,\n y = _bar$getProps.y,\n base = _bar$getProps.base,\n width = _bar$getProps.width,\n height = _bar$getProps.height;\n\n var left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {\n left: left,\n top: top,\n right: right,\n bottom: bottom\n };\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n var value = bar.options.borderWidth;\n var skip = bar.borderSkipped;\n var o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n var _bar$getProps2 = bar.getProps(['enableBorderRadius']),\n enableBorderRadius = _bar$getProps2.enableBorderRadius;\n\n var value = bar.options.borderRadius;\n var o = toTRBLCorners(value);\n var maxR = Math.min(maxW, maxH);\n var skip = bar.borderSkipped;\n var enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n var bounds = getBarBounds(bar);\n var width = bounds.right - bounds.left;\n var height = bounds.bottom - bounds.top;\n var border = parseBorderWidth(bar, width / 2, height / 2);\n var radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius: radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\n\nfunction _inRange(bar, x, y, useFinalPosition) {\n var skipX = x === null;\n var skipY = y === null;\n var skipBoth = skipX && skipY;\n var bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount) {\n var refRect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var x = rect.x !== refRect.x ? -amount : 0;\n var y = rect.y !== refRect.y ? -amount : 0;\n var w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n var h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nvar BarElement = /*#__PURE__*/function (_Element5) {\n _inherits(BarElement, _Element5);\n\n var _super15 = _createSuper(BarElement);\n\n function BarElement(cfg) {\n var _this26;\n\n _classCallCheck(this, BarElement);\n\n _this26 = _super15.call(this);\n _this26.options = undefined;\n _this26.horizontal = undefined;\n _this26.base = undefined;\n _this26.width = undefined;\n _this26.height = undefined;\n _this26.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(_assertThisInitialized(_this26), cfg);\n }\n\n return _this26;\n }\n\n _createClass(BarElement, [{\n key: \"draw\",\n value: function draw(ctx) {\n var inflateAmount = this.inflateAmount,\n _this$options14 = this.options,\n borderColor = _this$options14.borderColor,\n backgroundColor = _this$options14.backgroundColor;\n\n var _boundingRects = boundingRects(this),\n inner = _boundingRects.inner,\n outer = _boundingRects.outer;\n\n var addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }, {\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, useFinalPosition) {\n return _inRange(this, mouseX, mouseY, useFinalPosition);\n }\n }, {\n key: \"inXRange\",\n value: function inXRange(mouseX, useFinalPosition) {\n return _inRange(this, mouseX, null, useFinalPosition);\n }\n }, {\n key: \"inYRange\",\n value: function inYRange(mouseY, useFinalPosition) {\n return _inRange(this, null, mouseY, useFinalPosition);\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n var _this$getProps6 = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition),\n x = _this$getProps6.x,\n y = _this$getProps6.y,\n base = _this$getProps6.base,\n horizontal = _this$getProps6.horizontal;\n\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n }, {\n key: \"getRange\",\n value: function getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n }]);\n\n return BarElement;\n}(Element);\n\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nvar elements = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArcElement: ArcElement,\n BarElement: BarElement,\n LineElement: LineElement,\n PointElement: PointElement\n});\nvar BORDER_COLORS = ['rgb(54, 162, 235)', 'rgb(255, 99, 132)', 'rgb(255, 159, 64)', 'rgb(255, 205, 86)', 'rgb(75, 192, 192)', 'rgb(153, 102, 255)', 'rgb(201, 203, 207)' // grey\n]; // Border colors with 50% transparency\n\nvar BACKGROUND_COLORS = /* #__PURE__ */BORDER_COLORS.map(function (color) {\n return color.replace('rgb(', 'rgba(').replace(')', ', 0.5)');\n});\n\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\n\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\n\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\n\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(function () {\n return getBorderColor(i++);\n });\n return i;\n}\n\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(function () {\n return getBackgroundColor(i++);\n });\n return i;\n}\n\nfunction getColorizer(chart) {\n var i = 0;\n return function (dataset, datasetIndex) {\n var controller = chart.getDatasetMeta(datasetIndex).controller;\n\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\n\nfunction containsColorsDefinitions(descriptors) {\n var k;\n\n for (k in descriptors) {\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\n\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout: function beforeLayout(chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n\n var _chart$config = chart.config,\n datasets = _chart$config.data.datasets,\n chartOptions = _chart$config.options;\n var elements = chartOptions.elements;\n\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n\n var colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n var samples = options.samples || availableWidth;\n\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n\n var decimated = [];\n var bucketWidth = (count - 2) / (samples - 2);\n var sampledIndex = 0;\n var endIndex = start + count - 1;\n var a = start;\n var i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n\n for (i = 0; i < samples - 2; i++) {\n var avgX = 0;\n var avgY = 0;\n var j = void 0;\n var avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n var avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n var avgRangeLength = avgRangeEnd - avgRangeStart;\n\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n var rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n var rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n var _data$a = data[a],\n pointAx = _data$a.x,\n pointAy = _data$a.y;\n maxArea = area = -1;\n\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n var avgX = 0;\n var countX = 0;\n var i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n var decimated = [];\n var endIndex = start + count - 1;\n var xMin = data[start].x;\n var xMax = data[endIndex].x;\n var dx = xMax - xMin;\n\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n var truncX = x | 0;\n\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n var lastIndex = i - 1;\n\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n var intermediateIndex1 = Math.min(minIndex, maxIndex);\n var intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex1]), {}, {\n x: avgX\n }));\n }\n\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex2]), {}, {\n x: avgX\n }));\n }\n }\n\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n\n return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n var data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\n\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach(function (dataset) {\n cleanDecimatedDataset(dataset);\n });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n var pointCount = points.length;\n var start = 0;\n var count;\n var iScale = meta.iScale;\n\n var _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n\n return {\n start: start,\n count: count\n };\n}\n\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: function beforeElementsUpdate(chart, args, options) {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n\n var availableWidth = chart.width;\n chart.data.datasets.forEach(function (dataset, datasetIndex) {\n var _data = dataset._data,\n indexAxis = dataset.indexAxis;\n var meta = chart.getDatasetMeta(datasetIndex);\n var data = _data || dataset.data;\n\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n\n if (!meta.controller.supportsDecimation) {\n return;\n }\n\n var xAxis = chart.scales[meta.xAxisID];\n\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n\n if (chart.options.parsing) {\n return;\n }\n\n var _getStartAndCountOfVi3 = getStartAndCountOfVisiblePointsSimplified(meta, data),\n start = _getStartAndCountOfVi3.start,\n count = _getStartAndCountOfVi3.count;\n\n var threshold = options.threshold || 4 * availableWidth;\n\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function get() {\n return this._decimated;\n },\n set: function set(d) {\n this._data = d;\n }\n });\n }\n\n var decimated;\n\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n\n default:\n throw new Error(\"Unsupported decimation algorithm '\".concat(options.algorithm, \"'\"));\n }\n\n dataset._decimated = decimated;\n });\n },\n destroy: function destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n var segments = line.segments;\n var points = line.points;\n var tpoints = target.points;\n var parts = [];\n\n var _iterator19 = _createForOfIteratorHelper(segments),\n _step19;\n\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var segment = _step19.value;\n var start = segment.start,\n end = segment.end;\n end = _findSegmentEnd(start, end, points);\n\n var bounds = _getBounds(property, points[start], points[end], segment.loop);\n\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n\n var targetSegments = _boundSegments(target, bounds);\n\n var _iterator20 = _createForOfIteratorHelper(targetSegments),\n _step20;\n\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var tgt = _step20.value;\n\n var subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n\n var fillSources = _boundSegment(segment, points, subBounds);\n\n var _iterator21 = _createForOfIteratorHelper(fillSources),\n _step21;\n\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var fillSource = _step21.value;\n parts.push({\n source: fillSource,\n target: tgt,\n start: _defineProperty({}, property, _getEdge(bounds, subBounds, 'start', Math.max)),\n end: _defineProperty({}, property, _getEdge(bounds, subBounds, 'end', Math.min))\n });\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n\n return parts;\n}\n\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n\n var start = first[property];\n var end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n\n return {\n property: property,\n start: start,\n end: end\n };\n}\n\nfunction _pointsFromSegments(boundary, line) {\n var _ref12 = boundary || {},\n _ref12$x = _ref12.x,\n x = _ref12$x === void 0 ? null : _ref12$x,\n _ref12$y = _ref12.y,\n y = _ref12$y === void 0 ? null : _ref12$y;\n\n var linePoints = line.points;\n var points = [];\n line.segments.forEach(function (_ref13) {\n var start = _ref13.start,\n end = _ref13.end;\n end = _findSegmentEnd(start, end, linePoints);\n var first = linePoints[start];\n var last = linePoints[end];\n\n if (y !== null) {\n points.push({\n x: first.x,\n y: y\n });\n points.push({\n x: last.x,\n y: y\n });\n } else if (x !== null) {\n points.push({\n x: x,\n y: first.y\n });\n points.push({\n x: x,\n y: last.y\n });\n }\n });\n return points;\n}\n\nfunction _findSegmentEnd(start, end, points) {\n for (; end > start; end--) {\n var point = points[end];\n\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n\n return end;\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n var points = [];\n var _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points: points,\n options: {\n tension: 0\n },\n _loop: _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n var source = sources[index];\n var fill = source.fill;\n var visited = [index];\n var target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\nfunction _decodeFill(line, index, count) {\n var fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n var target = parseFloat(fill);\n\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\n\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n}\n\nfunction _getTargetPixel(fill, scale) {\n var pixel = null;\n\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n\n return pixel;\n}\n\nfunction _getTargetValue(fill, scale, startValue) {\n var value;\n\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n\n return value;\n}\n\nfunction parseFillOption(line) {\n var options = line.options;\n var fillOption = options.fill;\n var fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n\n return fill;\n}\n\nfunction _buildStackLine(source) {\n var scale = source.scale,\n index = source.index,\n line = source.line;\n var points = [];\n var segments = line.segments;\n var sourcePoints = line.points;\n var linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n\n for (var j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n\n return new LineElement({\n points: points,\n options: {}\n });\n}\n\nfunction getLinesBelow(scale, index) {\n var below = [];\n var metas = scale.getMatchingVisibleMetas('line');\n\n for (var i = 0; i < metas.length; i++) {\n var meta = metas[i];\n\n if (meta.index === index) {\n break;\n }\n\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n\n return below;\n}\n\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n var postponed = [];\n\n for (var j = 0; j < linesBelow.length; j++) {\n var line = linesBelow[j];\n\n var _findPoint = findPoint(line, sourcePoint, 'x'),\n first = _findPoint.first,\n last = _findPoint.last,\n point = _findPoint.point;\n\n if (!point || first && last) {\n continue;\n }\n\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n\n if (!last) {\n break;\n }\n }\n }\n\n points.push.apply(points, postponed);\n}\n\nfunction findPoint(line, sourcePoint, property) {\n var point = line.interpolate(sourcePoint, property);\n\n if (!point) {\n return {};\n }\n\n var pointValue = point[property];\n var segments = line.segments;\n var linePoints = line.points;\n var first = false;\n var last = false;\n\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n var firstValue = linePoints[segment.start][property];\n var lastValue = linePoints[segment.end][property];\n\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n\n return {\n first: first,\n last: last,\n point: point\n };\n}\n\nvar simpleArc = /*#__PURE__*/function () {\n function simpleArc(opts) {\n _classCallCheck(this, simpleArc);\n\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n\n _createClass(simpleArc, [{\n key: \"pathSegment\",\n value: function pathSegment(ctx, bounds, opts) {\n var x = this.x,\n y = this.y,\n radius = this.radius;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(point) {\n var x = this.x,\n y = this.y,\n radius = this.radius;\n var angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle: angle\n };\n }\n }]);\n\n return simpleArc;\n}();\n\nfunction _getTarget(source) {\n var chart = source.chart,\n fill = source.fill,\n line = source.line;\n\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n\n if (fill === 'shape') {\n return true;\n }\n\n var boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return _createBoundaryLine(boundary, line);\n}\n\nfunction getLineByIndex(chart, index) {\n var meta = chart.getDatasetMeta(index);\n var visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\n\nfunction computeBoundary(source) {\n var scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n\n return computeLinearBoundary(source);\n}\n\nfunction computeLinearBoundary(source) {\n var _source$scale = source.scale,\n scale = _source$scale === void 0 ? {} : _source$scale,\n fill = source.fill;\n\n var pixel = _getTargetPixel(fill, scale);\n\n if (isNumberFinite(pixel)) {\n var horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n\n return null;\n}\n\nfunction computeCircularBoundary(source) {\n var scale = source.scale,\n fill = source.fill;\n var options = scale.options;\n var length = scale.getLabels().length;\n var start = options.reverse ? scale.max : scale.min;\n\n var value = _getTargetValue(fill, scale, start);\n\n var target = [];\n\n if (options.grid.circular) {\n var center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (var i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n var target = _getTarget(source);\n\n var line = source.line,\n scale = source.scale,\n axis = source.axis;\n var lineOpts = line.options;\n var fillOption = lineOpts.fill;\n var color = lineOpts.backgroundColor;\n\n var _ref14 = fillOption || {},\n _ref14$above = _ref14.above,\n above = _ref14$above === void 0 ? color : _ref14$above,\n _ref14$below = _ref14.below,\n below = _ref14$below === void 0 ? color : _ref14$below;\n\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line: line,\n target: target,\n above: above,\n below: below,\n area: area,\n scale: scale,\n axis: axis\n });\n unclipArea(ctx);\n }\n}\n\nfunction doFill(ctx, cfg) {\n var line = cfg.line,\n target = cfg.target,\n above = cfg.above,\n below = cfg.below,\n area = cfg.area,\n scale = cfg.scale;\n var property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line: line,\n target: target,\n color: above,\n scale: scale,\n property: property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n\n fill(ctx, {\n line: line,\n target: target,\n color: below,\n scale: scale,\n property: property\n });\n ctx.restore();\n}\n\nfunction clipVertical(ctx, target, clipY) {\n var segments = target.segments,\n points = target.points;\n var first = true;\n var lineLoop = false;\n ctx.beginPath();\n\n var _iterator22 = _createForOfIteratorHelper(segments),\n _step22;\n\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var segment = _step22.value;\n var start = segment.start,\n end = segment.end;\n var firstPoint = points[start];\n\n var lastPoint = points[_findSegmentEnd(start, end, points)];\n\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction fill(ctx, cfg) {\n var line = cfg.line,\n target = cfg.target,\n property = cfg.property,\n color = cfg.color,\n scale = cfg.scale;\n\n var segments = _segments(line, target, property);\n\n var _iterator23 = _createForOfIteratorHelper(segments),\n _step23;\n\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n var _ref16 = _step23.value;\n var src = _ref16.source;\n var tgt = _ref16.target;\n var start = _ref16.start;\n var end = _ref16.end;\n var _src$style = src.style;\n _src$style = _src$style === void 0 ? {} : _src$style;\n var _src$style$background = _src$style.backgroundColor,\n backgroundColor = _src$style$background === void 0 ? color : _src$style$background;\n var notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n var lineLoop = !!line.pathSegment(ctx, src);\n var loop = void 0;\n\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n var targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n}\n\nfunction clipBounds(ctx, scale, bounds) {\n var _scale$chart$chartAre = scale.chart.chartArea,\n top = _scale$chart$chartAre.top,\n bottom = _scale$chart$chartAre.bottom;\n\n var _ref17 = bounds || {},\n property = _ref17.property,\n start = _ref17.start,\n end = _ref17.end;\n\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n var interpolatedPoint = target.interpolate(point, property);\n\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate: function afterDatasetsUpdate(chart, _args, options) {\n var count = (chart.data.datasets || []).length;\n var sources = [];\n var meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart: chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line: line\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw: function beforeDraw(chart, _args, options) {\n var draw = options.drawTime === 'beforeDraw';\n var metasets = chart.getSortedVisibleDatasetMetas();\n var area = chart.chartArea;\n\n for (var i = metasets.length - 1; i >= 0; --i) {\n var source = metasets[i].$filler;\n\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw: function beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n var metasets = chart.getSortedVisibleDatasetMetas();\n\n for (var i = metasets.length - 1; i >= 0; --i) {\n var source = metasets[i].$filler;\n\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw: function beforeDatasetDraw(chart, args, options) {\n var source = args.meta.$filler;\n\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nvar getBoxSize = function getBoxSize(labelOpts, fontSize) {\n var _labelOpts$boxHeight = labelOpts.boxHeight,\n boxHeight = _labelOpts$boxHeight === void 0 ? fontSize : _labelOpts$boxHeight,\n _labelOpts$boxWidth = labelOpts.boxWidth,\n boxWidth = _labelOpts$boxWidth === void 0 ? fontSize : _labelOpts$boxWidth;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth: boxWidth,\n boxHeight: boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nvar itemsEqual = function itemsEqual(a, b) {\n return a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n};\n\nvar Legend = /*#__PURE__*/function (_Element6) {\n _inherits(Legend, _Element6);\n\n var _super16 = _createSuper(Legend);\n\n function Legend(config) {\n var _this27;\n\n _classCallCheck(this, Legend);\n\n _this27 = _super16.call(this);\n _this27._added = false;\n _this27.legendHitBoxes = [];\n _this27._hoveredItem = null;\n _this27.doughnutMode = false;\n _this27.chart = config.chart;\n _this27.options = config.options;\n _this27.ctx = config.ctx;\n _this27.legendItems = undefined;\n _this27.columnSizes = undefined;\n _this27.lineWidths = undefined;\n _this27.maxHeight = undefined;\n _this27.maxWidth = undefined;\n _this27.top = undefined;\n _this27.bottom = undefined;\n _this27.left = undefined;\n _this27.right = undefined;\n _this27.height = undefined;\n _this27.width = undefined;\n _this27._margins = undefined;\n _this27.position = undefined;\n _this27.weight = undefined;\n _this27.fullSize = undefined;\n return _this27;\n }\n\n _createClass(Legend, [{\n key: \"update\",\n value: function update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n }, {\n key: \"setDimensions\",\n value: function setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n }, {\n key: \"buildLabels\",\n value: function buildLabels() {\n var _this28 = this;\n\n var labelOpts = this.options.labels || {};\n var legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter(function (item) {\n return labelOpts.filter(item, _this28.chart.data);\n });\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort(function (a, b) {\n return labelOpts.sort(a, b, _this28.chart.data);\n });\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n }, {\n key: \"fit\",\n value: function fit() {\n var options = this.options,\n ctx = this.ctx;\n\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n var labelOpts = options.labels;\n var labelFont = toFont(labelOpts.font);\n var fontSize = labelFont.size;\n\n var titleHeight = this._computeTitleHeight();\n\n var _getBoxSize = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize.boxWidth,\n itemHeight = _getBoxSize.itemHeight;\n\n var width, height;\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n }, {\n key: \"_fitRows\",\n value: function _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n var ctx = this.ctx,\n maxWidth = this.maxWidth,\n padding = this.options.labels.padding;\n var hitboxes = this.legendHitBoxes = [];\n var lineWidths = this.lineWidths = [0];\n var lineHeight = itemHeight + padding;\n var totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n var row = -1;\n var top = -lineHeight;\n this.legendItems.forEach(function (legendItem, i) {\n var itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {\n left: 0,\n top: top,\n row: row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n }, {\n key: \"_fitCols\",\n value: function _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n var ctx = this.ctx,\n maxHeight = this.maxHeight,\n padding = this.options.labels.padding;\n var hitboxes = this.legendHitBoxes = [];\n var columnSizes = this.columnSizes = [];\n var heightLimit = maxHeight - titleHeight;\n var totalWidth = padding;\n var currentColWidth = 0;\n var currentColHeight = 0;\n var left = 0;\n var col = 0;\n this.legendItems.forEach(function (legendItem, i) {\n var _calculateItemSize = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight),\n itemWidth = _calculateItemSize.itemWidth,\n itemHeight = _calculateItemSize.itemHeight;\n\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n hitboxes[i] = {\n left: left,\n top: currentColHeight,\n col: col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n }, {\n key: \"adjustHitBoxes\",\n value: function adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n\n var titleHeight = this._computeTitleHeight();\n\n var hitboxes = this.legendHitBoxes,\n _this$options15 = this.options,\n align = _this$options15.align,\n padding = _this$options15.labels.padding,\n rtl = _this$options15.rtl;\n var rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n\n if (this.isHorizontal()) {\n var row = 0;\n\n var left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n\n var _iterator24 = _createForOfIteratorHelper(hitboxes),\n _step24;\n\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n var hitbox = _step24.value;\n\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n } else {\n var col = 0;\n\n var top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n\n var _iterator25 = _createForOfIteratorHelper(hitboxes),\n _step25;\n\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var _hitbox = _step25.value;\n\n if (_hitbox.col !== col) {\n col = _hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n\n _hitbox.top = top;\n _hitbox.left += this.left + padding;\n _hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(_hitbox.left), _hitbox.width);\n top += _hitbox.height + padding;\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n }\n }\n }, {\n key: \"isHorizontal\",\n value: function isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n }, {\n key: \"draw\",\n value: function draw() {\n if (this.options.display) {\n var ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n }, {\n key: \"_draw\",\n value: function _draw() {\n var _this29 = this;\n\n var opts = this.options,\n columnSizes = this.columnSizes,\n lineWidths = this.lineWidths,\n ctx = this.ctx;\n var align = opts.align,\n labelOpts = opts.labels;\n var defaultColor = defaults.color;\n var rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n var labelFont = toFont(labelOpts.font);\n var padding = labelOpts.padding;\n var fontSize = labelFont.size;\n var halfFontSize = fontSize / 2;\n var cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n var _getBoxSize2 = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize2.boxWidth,\n boxHeight = _getBoxSize2.boxHeight,\n itemHeight = _getBoxSize2.itemHeight;\n\n var drawLegendBox = function drawLegendBox(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n ctx.save();\n var lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n var drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n var centerX = rtlHelper.xPlus(x, boxWidth / 2);\n var centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n var yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n var xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n var borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(function (v) {\n return v !== 0;\n })) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n var fillText = function fillText(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n var isHorizontal = this.isHorizontal();\n\n var titleHeight = this._computeTitleHeight();\n\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n var lineHeight = itemHeight + padding;\n this.legendItems.forEach(function (legendItem, i) {\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n var textWidth = ctx.measureText(legendItem.text).width;\n var textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n var width = boxWidth + halfFontSize + textWidth;\n var x = cursor.x;\n var y = cursor.y;\n rtlHelper.setWidth(_this29.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > _this29.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, _this29.left + padding, _this29.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > _this29.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, _this29.top + titleHeight + padding, _this29.bottom - columnSizes[cursor.line].height);\n }\n\n var realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : _this29.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n var fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n }, {\n key: \"drawTitle\",\n value: function drawTitle() {\n var opts = this.options;\n var titleOpts = opts.title;\n var titleFont = toFont(titleOpts.font);\n var titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n var rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n var ctx = this.ctx;\n var position = titleOpts.position;\n var halfFontSize = titleFont.size / 2;\n var topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n var y;\n var left = this.left;\n var maxWidth = this.width;\n\n if (this.isHorizontal()) {\n maxWidth = Math.max.apply(Math, _toConsumableArray(this.lineWidths));\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n var maxHeight = this.columnSizes.reduce(function (acc, size) {\n return Math.max(acc, size.height);\n }, 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n var x = _alignStartEnd(position, left, left + maxWidth);\n\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n }, {\n key: \"_computeTitleHeight\",\n value: function _computeTitleHeight() {\n var titleOpts = this.options.title;\n var titleFont = toFont(titleOpts.font);\n var titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n }, {\n key: \"_getLegendItemAt\",\n value: function _getLegendItemAt(x, y) {\n var i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(e) {\n var opts = this.options;\n\n if (!isListened(e.type, opts)) {\n return;\n }\n\n var hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n var previous = this._hoveredItem;\n var sameItem = itemsEqual(previous, hoveredItem);\n\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n }]);\n\n return Legend;\n}(Element);\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n var itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n var itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth: itemWidth,\n itemHeight: itemHeight\n };\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n var legendItemText = legendItem.text;\n\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce(function (a, b) {\n return a.length > b.length ? a : b;\n });\n }\n\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n var itemHeight = _itemHeight;\n\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n var labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n\n return false;\n}\n\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start: function start(chart, _args, options) {\n var legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options: options,\n chart: chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop: function stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate: function beforeUpdate(chart, _args, options) {\n var legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate: function afterUpdate(chart) {\n var legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent: function afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick: function onClick(e, legendItem, legend) {\n var index = legendItem.datasetIndex;\n var ci = legend.chart;\n\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: function color(ctx) {\n return ctx.chart.options.color;\n },\n boxWidth: 40,\n padding: 10,\n generateLabels: function generateLabels(chart) {\n var datasets = chart.data.datasets;\n var _chart$legend$options = chart.legend.options.labels,\n usePointStyle = _chart$legend$options.usePointStyle,\n pointStyle = _chart$legend$options.pointStyle,\n textAlign = _chart$legend$options.textAlign,\n color = _chart$legend$options.color,\n useBorderRadius = _chart$legend$options.useBorderRadius,\n borderRadius = _chart$legend$options.borderRadius;\n return chart._getSortedDatasetMetas().map(function (meta) {\n var style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n var borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: function color(ctx) {\n return ctx.chart.options.color;\n },\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: function _scriptable(name) {\n return !name.startsWith('on');\n },\n labels: {\n _scriptable: function _scriptable(name) {\n return !['generateLabels', 'filter', 'sort'].includes(name);\n }\n }\n }\n};\n\nvar Title = /*#__PURE__*/function (_Element7) {\n _inherits(Title, _Element7);\n\n var _super17 = _createSuper(Title);\n\n function Title(config) {\n var _this30;\n\n _classCallCheck(this, Title);\n\n _this30 = _super17.call(this);\n _this30.chart = config.chart;\n _this30.options = config.options;\n _this30.ctx = config.ctx;\n _this30._padding = undefined;\n _this30.top = undefined;\n _this30.bottom = undefined;\n _this30.left = undefined;\n _this30.right = undefined;\n _this30.width = undefined;\n _this30.height = undefined;\n _this30.position = undefined;\n _this30.weight = undefined;\n _this30.fullSize = undefined;\n return _this30;\n }\n\n _createClass(Title, [{\n key: \"update\",\n value: function update(maxWidth, maxHeight) {\n var opts = this.options;\n this.left = 0;\n this.top = 0;\n\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n var lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n\n var textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n }, {\n key: \"isHorizontal\",\n value: function isHorizontal() {\n var pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n }, {\n key: \"_drawArgs\",\n value: function _drawArgs(offset) {\n var top = this.top,\n left = this.left,\n bottom = this.bottom,\n right = this.right,\n options = this.options;\n var align = options.align;\n var rotation = 0;\n var maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n\n maxWidth = bottom - top;\n }\n\n return {\n titleX: titleX,\n titleY: titleY,\n maxWidth: maxWidth,\n rotation: rotation\n };\n }\n }, {\n key: \"draw\",\n value: function draw() {\n var ctx = this.ctx;\n var opts = this.options;\n\n if (!opts.display) {\n return;\n }\n\n var fontOpts = toFont(opts.font);\n var lineHeight = fontOpts.lineHeight;\n var offset = lineHeight / 2 + this._padding.top;\n\n var _this$_drawArgs = this._drawArgs(offset),\n titleX = _this$_drawArgs.titleX,\n titleY = _this$_drawArgs.titleY,\n maxWidth = _this$_drawArgs.maxWidth,\n rotation = _this$_drawArgs.rotation;\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth: maxWidth,\n rotation: rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n }]);\n\n return Title;\n}(Element);\n\nfunction createTitle(chart, titleOpts) {\n var title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart: chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start: function start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop: function stop(chart) {\n var titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate: function beforeUpdate(chart, _args, options) {\n var title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nvar map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start: function start(chart, _args, options) {\n var title = new Title({\n ctx: chart.ctx,\n options: options,\n chart: chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop: function stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate: function beforeUpdate(chart, _args, options) {\n var title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nvar positioners = {\n average: function average(items) {\n if (!items.length) {\n return false;\n }\n\n var i, len;\n var xSet = new Set();\n var y = 0;\n var count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n var el = items[i].element;\n\n if (el && el.hasValue()) {\n var pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n var xAverage = _toConsumableArray(xSet).reduce(function (a, b) {\n return a + b;\n }) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest: function nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n var x = eventPosition.x;\n var y = eventPosition.y;\n var minDistance = Number.POSITIVE_INFINITY;\n var i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n var el = items[i].element;\n\n if (el && el.hasValue()) {\n var center = el.getCenterPoint();\n var d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n var tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x: x,\n y: y\n };\n }\n};\n\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n\n return str;\n}\n\nfunction createTooltipItem(chart, item) {\n var element = item.element,\n datasetIndex = item.datasetIndex,\n index = item.index;\n var controller = chart.getDatasetMeta(datasetIndex).controller;\n\n var _controller$getLabelA = controller.getLabelAndValue(index),\n label = _controller$getLabelA.label,\n value = _controller$getLabelA.value;\n\n return {\n chart: chart,\n label: label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex: datasetIndex,\n element: element\n };\n}\n\nfunction getTooltipSize(tooltip, options) {\n var ctx = tooltip.chart.ctx;\n var body = tooltip.body,\n footer = tooltip.footer,\n title = tooltip.title;\n var boxWidth = options.boxWidth,\n boxHeight = options.boxHeight;\n var bodyFont = toFont(options.bodyFont);\n var titleFont = toFont(options.titleFont);\n var footerFont = toFont(options.footerFont);\n var titleLineCount = title.length;\n var footerLineCount = footer.length;\n var bodyLineItemCount = body.length;\n var padding = toPadding(options.padding);\n var height = padding.height;\n var width = 0;\n var combinedBodyLength = body.reduce(function (count, bodyItem) {\n return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n }, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n\n if (combinedBodyLength) {\n var bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n\n var widthPadding = 0;\n\n var maxLineWidth = function maxLineWidth(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, function (bodyItem) {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width: width,\n height: height\n };\n}\n\nfunction determineYAlign(chart, size) {\n var y = size.y,\n height = size.height;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n var x = size.x,\n width = size.width;\n var caret = options.caretSize + options.caretPadding;\n\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n var x = size.x,\n width = size.width;\n var chartWidth = chart.width,\n _chart$chartArea = chart.chartArea,\n left = _chart$chartArea.left,\n right = _chart$chartArea.right;\n var xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\nfunction determineAlignment(chart, options, size) {\n var yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign: yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n var x = size.x,\n width = size.width;\n\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n var y = size.y,\n height = size.height;\n\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n\n return y;\n}\n\nfunction getBackgroundPoint(options, size, alignment, chart) {\n var caretSize = options.caretSize,\n caretPadding = options.caretPadding,\n cornerRadius = options.cornerRadius;\n var xAlign = alignment.xAlign,\n yAlign = alignment.yAlign;\n var paddingAndSize = caretSize + caretPadding;\n\n var _toTRBLCorners = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners.topLeft,\n topRight = _toTRBLCorners.topRight,\n bottomLeft = _toTRBLCorners.bottomLeft,\n bottomRight = _toTRBLCorners.bottomRight;\n\n var x = alignX(size, xAlign);\n var y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n var padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\n\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip: tooltip,\n tooltipItems: tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n var override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nvar defaultCallbacks = {\n beforeTitle: noop,\n title: function title(tooltipItems) {\n if (tooltipItems.length > 0) {\n var item = tooltipItems[0];\n var labels = item.chart.data.labels;\n var labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label: function label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n var label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n\n var value = tooltipItem.formattedValue;\n\n if (!isNullOrUndef(value)) {\n label += value;\n }\n\n return label;\n },\n labelColor: function labelColor(tooltipItem) {\n var meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n var options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor: function labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle: function labelPointStyle(tooltipItem) {\n var meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n var options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n var result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nvar Tooltip = /*#__PURE__*/function (_Element8) {\n _inherits(Tooltip, _Element8);\n\n var _super18 = _createSuper(Tooltip);\n\n function Tooltip(config) {\n var _this31;\n\n _classCallCheck(this, Tooltip);\n\n _this31 = _super18.call(this);\n _this31.opacity = 0;\n _this31._active = [];\n _this31._eventPosition = undefined;\n _this31._size = undefined;\n _this31._cachedAnimations = undefined;\n _this31._tooltipItems = [];\n _this31.$animations = undefined;\n _this31.$context = undefined;\n _this31.chart = config.chart;\n _this31.options = config.options;\n _this31.dataPoints = undefined;\n _this31.title = undefined;\n _this31.beforeBody = undefined;\n _this31.body = undefined;\n _this31.afterBody = undefined;\n _this31.footer = undefined;\n _this31.xAlign = undefined;\n _this31.yAlign = undefined;\n _this31.x = undefined;\n _this31.y = undefined;\n _this31.height = undefined;\n _this31.width = undefined;\n _this31.caretX = undefined;\n _this31.caretY = undefined;\n _this31.labelColors = undefined;\n _this31.labelPointStyles = undefined;\n _this31.labelTextColors = undefined;\n return _this31;\n }\n\n _createClass(Tooltip, [{\n key: \"initialize\",\n value: function initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n }, {\n key: \"_resolveAnimations\",\n value: function _resolveAnimations() {\n var cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n var chart = this.chart;\n var options = this.options.setContext(this.getContext());\n var opts = options.enabled && chart.options.animation && options.animations;\n var animations = new Animations(this.chart, opts);\n\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n }, {\n key: \"getTitle\",\n value: function getTitle(context, options) {\n var callbacks = options.callbacks;\n var beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n var title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n var afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n var lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n }, {\n key: \"getBeforeBody\",\n value: function getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n }, {\n key: \"getBody\",\n value: function getBody(tooltipItems, options) {\n var _this32 = this;\n\n var callbacks = options.callbacks;\n var bodyItems = [];\n each(tooltipItems, function (context) {\n var bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n var scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', _this32, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', _this32, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', _this32, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n }, {\n key: \"getAfterBody\",\n value: function getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n }, {\n key: \"getFooter\",\n value: function getFooter(tooltipItems, options) {\n var callbacks = options.callbacks;\n var beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n var footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n var afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n var lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n }, {\n key: \"_createItems\",\n value: function _createItems(options) {\n var _this33 = this;\n\n var active = this._active;\n var data = this.chart.data;\n var labelColors = [];\n var labelPointStyles = [];\n var labelTextColors = [];\n var tooltipItems = [];\n var i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n if (options.filter) {\n tooltipItems = tooltipItems.filter(function (element, index, array) {\n return options.filter(element, index, array, data);\n });\n }\n\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort(function (a, b) {\n return options.itemSort(a, b, data);\n });\n }\n\n each(tooltipItems, function (context) {\n var scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', _this33, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', _this33, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', _this33, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n }, {\n key: \"update\",\n value: function update(changed, replay) {\n var options = this.options.setContext(this.getContext());\n var active = this._active;\n var properties;\n var tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n var position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n var size = this._size = getTooltipSize(this, options);\n var positionAndSize = Object.assign({}, position, size);\n var alignment = determineAlignment(this.chart, options, positionAndSize);\n var backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay: replay\n });\n }\n }\n }, {\n key: \"drawCaret\",\n value: function drawCaret(tooltipPoint, ctx, size, options) {\n var caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n }, {\n key: \"getCaretPosition\",\n value: function getCaretPosition(tooltipPoint, size, options) {\n var xAlign = this.xAlign,\n yAlign = this.yAlign;\n var caretSize = options.caretSize,\n cornerRadius = options.cornerRadius;\n\n var _toTRBLCorners2 = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners2.topLeft,\n topRight = _toTRBLCorners2.topRight,\n bottomLeft = _toTRBLCorners2.bottomLeft,\n bottomRight = _toTRBLCorners2.bottomRight;\n\n var ptX = tooltipPoint.x,\n ptY = tooltipPoint.y;\n var width = size.width,\n height = size.height;\n var x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n\n y3 = y1;\n }\n\n return {\n x1: x1,\n x2: x2,\n x3: x3,\n y1: y1,\n y2: y2,\n y3: y3\n };\n }\n }, {\n key: \"drawTitle\",\n value: function drawTitle(pt, ctx, options) {\n var title = this.title;\n var length = title.length;\n var titleFont, titleSpacing, i;\n\n if (length) {\n var rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n }, {\n key: \"_drawColorBox\",\n value: function _drawColorBox(ctx, pt, i, rtlHelper, options) {\n var labelColor = this.labelColors[i];\n var labelPointStyle = this.labelPointStyles[i];\n var boxHeight = options.boxHeight,\n boxWidth = options.boxWidth;\n var bodyFont = toFont(options.bodyFont);\n var colorX = getAlignedX(this, 'left', options);\n var rtlColorX = rtlHelper.x(colorX);\n var yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n var colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n var drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n var centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n var centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max.apply(Math, _toConsumableArray(Object.values(labelColor.borderWidth))) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n var outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n var innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n var borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(function (v) {\n return v !== 0;\n })) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n ctx.fillStyle = this.labelTextColors[i];\n }\n }, {\n key: \"drawBody\",\n value: function drawBody(pt, ctx, options) {\n var body = this.body;\n var bodySpacing = options.bodySpacing,\n bodyAlign = options.bodyAlign,\n displayColors = options.displayColors,\n boxHeight = options.boxHeight,\n boxWidth = options.boxWidth,\n boxPadding = options.boxPadding;\n var bodyFont = toFont(options.bodyFont);\n var bodyLineHeight = bodyFont.lineHeight;\n var xLinePadding = 0;\n var rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n var fillLineOfText = function fillLineOfText(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n var bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n var bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n }, {\n key: \"drawFooter\",\n value: function drawFooter(pt, ctx, options) {\n var footer = this.footer;\n var length = footer.length;\n var footerFont, i;\n\n if (length) {\n var rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n }, {\n key: \"drawBackground\",\n value: function drawBackground(pt, ctx, tooltipSize, options) {\n var xAlign = this.xAlign,\n yAlign = this.yAlign;\n var x = pt.x,\n y = pt.y;\n var width = tooltipSize.width,\n height = tooltipSize.height;\n\n var _toTRBLCorners3 = toTRBLCorners(options.cornerRadius),\n topLeft = _toTRBLCorners3.topLeft,\n topRight = _toTRBLCorners3.topRight,\n bottomLeft = _toTRBLCorners3.bottomLeft,\n bottomRight = _toTRBLCorners3.bottomRight;\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n }, {\n key: \"_updateAnimationTarget\",\n value: function _updateAnimationTarget(options) {\n var chart = this.chart;\n var anims = this.$animations;\n var animX = anims && anims.x;\n var animY = anims && anims.y;\n\n if (animX || animY) {\n var position = positioners[options.position].call(this, this._active, this._eventPosition);\n\n if (!position) {\n return;\n }\n\n var size = this._size = getTooltipSize(this, options);\n var positionAndSize = Object.assign({}, position, this._size);\n var alignment = determineAlignment(chart, options, positionAndSize);\n var point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n\n this._resolveAnimations().update(this, point);\n }\n }\n }\n }, {\n key: \"_willRender\",\n value: function _willRender() {\n return !!this.opacity;\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var options = this.options.setContext(this.getContext());\n var opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n var tooltipSize = {\n width: this.width,\n height: this.height\n };\n var pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n var padding = toPadding(options.padding);\n var hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n }, {\n key: \"getActiveElements\",\n value: function getActiveElements() {\n return this._active || [];\n }\n }, {\n key: \"setActiveElements\",\n value: function setActiveElements(activeElements, eventPosition) {\n var _this34 = this;\n\n var lastActive = this._active;\n var active = activeElements.map(function (_ref18) {\n var datasetIndex = _ref18.datasetIndex,\n index = _ref18.index;\n\n var meta = _this34.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex: datasetIndex,\n element: meta.data[index],\n index: index\n };\n });\n var changed = !_elementsEqual(lastActive, active);\n\n var positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(e, replay) {\n var inChartArea = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n\n this._ignoreReplayEvents = false;\n var options = this.options;\n var lastActive = this._active || [];\n\n var active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n var positionChanged = this._positionChanged(active, e);\n\n var changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n }, {\n key: \"_getActiveElements\",\n value: function _getActiveElements(e, lastActive, replay, inChartArea) {\n var _this35 = this;\n\n var options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n return lastActive.filter(function (i) {\n return _this35.chart.data.datasets[i.datasetIndex] && _this35.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined;\n });\n }\n\n var active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n }, {\n key: \"_positionChanged\",\n value: function _positionChanged(active, e) {\n var caretX = this.caretX,\n caretY = this.caretY,\n options = this.options;\n var position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n }]);\n\n return Tooltip;\n}(Element);\n\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners: positioners,\n afterInit: function afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart: chart,\n options: options\n });\n }\n },\n beforeUpdate: function beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset: function reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw: function afterDraw(chart) {\n var tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n var args = {\n tooltip: tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', _objectSpread(_objectSpread({}, args), {}, {\n cancelable: true\n })) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent: function afterEvent(chart, args) {\n if (chart.tooltip) {\n var useFinalPosition = args.replay;\n\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: function boxHeight(ctx, opts) {\n return opts.bodyFont.size;\n },\n boxWidth: function boxWidth(ctx, opts) {\n return opts.bodyFont.size;\n },\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY']\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: function _scriptable(name) {\n return name !== 'filter' && name !== 'itemSort' && name !== 'external';\n },\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\nvar plugins = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Colors: plugin_colors,\n Decimation: plugin_decimation,\n Filler: index,\n Legend: plugin_legend,\n SubTitle: plugin_subtitle,\n Title: plugin_title,\n Tooltip: plugin_tooltip\n});\n\nvar addIfString = function addIfString(labels, raw, index, addedLabels) {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index: index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n var first = labels.indexOf(raw);\n\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n\n var last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nvar validIndex = function validIndex(index, max) {\n return index === null ? null : _limitValue(Math.round(index), 0, max);\n};\n\nfunction _getLabelForValue(value) {\n var labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n\n return value;\n}\n\nvar CategoryScale = /*#__PURE__*/function (_Scale) {\n _inherits(CategoryScale, _Scale);\n\n var _super19 = _createSuper(CategoryScale);\n\n function CategoryScale(cfg) {\n var _this36;\n\n _classCallCheck(this, CategoryScale);\n\n _this36 = _super19.call(this, cfg);\n _this36._startValue = undefined;\n _this36._valueRange = 0;\n _this36._addedLabels = [];\n return _this36;\n }\n\n _createClass(CategoryScale, [{\n key: \"init\",\n value: function init(scaleOptions) {\n var added = this._addedLabels;\n\n if (added.length) {\n var labels = this.getLabels();\n\n var _iterator26 = _createForOfIteratorHelper(added),\n _step26;\n\n try {\n for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {\n var _ref20 = _step26.value;\n var _index3 = _ref20.index;\n var label = _ref20.label;\n\n if (labels[_index3] === label) {\n labels.splice(_index3, 1);\n }\n }\n } catch (err) {\n _iterator26.e(err);\n } finally {\n _iterator26.f();\n }\n\n this._addedLabels = [];\n }\n\n _get(_getPrototypeOf(CategoryScale.prototype), \"init\", this).call(this, scaleOptions);\n }\n }, {\n key: \"parse\",\n value: function parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n\n var labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n }, {\n key: \"determineDataLimits\",\n value: function determineDataLimits() {\n var _this$getUserBounds2 = this.getUserBounds(),\n minDefined = _this$getUserBounds2.minDefined,\n maxDefined = _this$getUserBounds2.maxDefined;\n\n var _this$getMinMax = this.getMinMax(true),\n min = _this$getMinMax.min,\n max = _this$getMinMax.max;\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n }, {\n key: \"buildTicks\",\n value: function buildTicks() {\n var min = this.min;\n var max = this.max;\n var offset = this.options.offset;\n var ticks = [];\n var labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (var value = min; value <= max; value++) {\n ticks.push({\n value: value\n });\n }\n\n return ticks;\n }\n }, {\n key: \"getLabelForValue\",\n value: function getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n }, {\n key: \"configure\",\n value: function configure() {\n _get(_getPrototypeOf(CategoryScale.prototype), \"configure\", this).call(this);\n\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n }, {\n key: \"getPixelForValue\",\n value: function getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n }, {\n key: \"getPixelForTick\",\n value: function getPixelForTick(index) {\n var ticks = this.ticks;\n\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n\n return this.getPixelForValue(ticks[index].value);\n }\n }, {\n key: \"getValueForPixel\",\n value: function getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n }, {\n key: \"getBasePixel\",\n value: function getBasePixel() {\n return this.bottom;\n }\n }]);\n\n return CategoryScale;\n}(Scale);\n\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n var ticks = [];\n var MIN_SPACING = 1e-14;\n var bounds = generationOptions.bounds,\n step = generationOptions.step,\n min = generationOptions.min,\n max = generationOptions.max,\n precision = generationOptions.precision,\n count = generationOptions.count,\n maxTicks = generationOptions.maxTicks,\n maxDigits = generationOptions.maxDigits,\n includeBounds = generationOptions.includeBounds;\n var unit = step || 1;\n var maxSpaces = maxTicks - 1;\n var rmin = dataRange.min,\n rmax = dataRange.max;\n var minDefined = !isNullOrUndef(min);\n var maxDefined = !isNullOrUndef(max);\n var countDefined = !isNullOrUndef(count);\n var minSpacing = (rmax - rmin) / (maxDigits + 1);\n var spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n var factor, niceMin, niceMax, numSpaces;\n\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{\n value: rmin\n }, {\n value: rmax\n }];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n var decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n var j = 0;\n\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n\n if (niceMin < min) {\n j++;\n }\n\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n var tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n\n if (maxDefined && tickValue > max) {\n break;\n }\n\n ticks.push({\n value: tickValue\n });\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, _ref21) {\n var horizontal = _ref21.horizontal,\n minRotation = _ref21.minRotation;\n var rad = toRadians(minRotation);\n var ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n var length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nvar LinearScaleBase = /*#__PURE__*/function (_Scale2) {\n _inherits(LinearScaleBase, _Scale2);\n\n var _super20 = _createSuper(LinearScaleBase);\n\n function LinearScaleBase(cfg) {\n var _this37;\n\n _classCallCheck(this, LinearScaleBase);\n\n _this37 = _super20.call(this, cfg);\n _this37.start = undefined;\n _this37.end = undefined;\n _this37._startValue = undefined;\n _this37._endValue = undefined;\n _this37._valueRange = 0;\n return _this37;\n }\n\n _createClass(LinearScaleBase, [{\n key: \"parse\",\n value: function parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n }, {\n key: \"handleTickRangeOptions\",\n value: function handleTickRangeOptions() {\n var beginAtZero = this.options.beginAtZero;\n\n var _this$getUserBounds3 = this.getUserBounds(),\n minDefined = _this$getUserBounds3.minDefined,\n maxDefined = _this$getUserBounds3.maxDefined;\n\n var min = this.min,\n max = this.max;\n\n var setMin = function setMin(v) {\n return min = minDefined ? min : v;\n };\n\n var setMax = function setMax(v) {\n return max = maxDefined ? max : v;\n };\n\n if (beginAtZero) {\n var minSign = sign(min);\n var maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n var offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n\n this.min = min;\n this.max = max;\n }\n }, {\n key: \"getTickLimit\",\n value: function getTickLimit() {\n var tickOpts = this.options.ticks;\n var maxTicksLimit = tickOpts.maxTicksLimit,\n stepSize = tickOpts.stepSize;\n var maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n\n if (maxTicks > 1000) {\n console.warn(\"scales.\".concat(this.id, \".ticks.stepSize: \").concat(stepSize, \" would result generating up to \").concat(maxTicks, \" ticks. Limiting to 1000.\"));\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n }, {\n key: \"computeTickLimit\",\n value: function computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n }, {\n key: \"buildTicks\",\n value: function buildTicks() {\n var opts = this.options;\n var tickOpts = opts.ticks;\n var maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n var numericGeneratorOptions = {\n maxTicks: maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n var dataRange = this._range || this;\n var ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n }, {\n key: \"configure\",\n value: function configure() {\n var ticks = this.ticks;\n var start = this.min;\n var end = this.max;\n\n _get(_getPrototypeOf(LinearScaleBase.prototype), \"configure\", this).call(this);\n\n if (this.options.offset && ticks.length) {\n var offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n }, {\n key: \"getLabelForValue\",\n value: function getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n }]);\n\n return LinearScaleBase;\n}(Scale);\n\nvar LinearScale = /*#__PURE__*/function (_LinearScaleBase) {\n _inherits(LinearScale, _LinearScaleBase);\n\n var _super21 = _createSuper(LinearScale);\n\n function LinearScale() {\n _classCallCheck(this, LinearScale);\n\n return _super21.apply(this, arguments);\n }\n\n _createClass(LinearScale, [{\n key: \"determineDataLimits\",\n value: function determineDataLimits() {\n var _this$getMinMax2 = this.getMinMax(true),\n min = _this$getMinMax2.min,\n max = _this$getMinMax2.max;\n\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n }, {\n key: \"computeTickLimit\",\n value: function computeTickLimit() {\n var horizontal = this.isHorizontal();\n var length = horizontal ? this.width : this.height;\n var minRotation = toRadians(this.options.ticks.minRotation);\n var ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n\n var tickFont = this._resolveTickFontOptions(0);\n\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n }, {\n key: \"getPixelForValue\",\n value: function getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n }, {\n key: \"getValueForPixel\",\n value: function getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n }]);\n\n return LinearScale;\n}(LinearScaleBase);\n\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nvar log10Floor = function log10Floor(v) {\n return Math.floor(log10(v));\n};\n\nvar changeExponent = function changeExponent(v, m) {\n return Math.pow(10, log10Floor(v) + m);\n};\n\nfunction isMajor(tickVal) {\n var remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n var rangeStep = Math.pow(10, rangeExp);\n var start = Math.floor(min / rangeStep);\n var end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n var range = max - min;\n var rangeExp = log10Floor(range);\n\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n\n return Math.min(rangeExp, log10Floor(min));\n}\n\nfunction generateTicks(generationOptions, _ref22) {\n var min = _ref22.min,\n max = _ref22.max;\n min = finiteOrDefault(generationOptions.min, min);\n var ticks = [];\n var minExp = log10Floor(min);\n var exp = startExp(min, max);\n var precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n var stepSize = Math.pow(10, exp);\n var base = minExp > exp ? Math.pow(10, minExp) : 0;\n var start = Math.round((min - base) * precision) / precision;\n var offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n var significand = Math.floor((start - offset) / Math.pow(10, exp));\n var value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n\n while (value < max) {\n ticks.push({\n value: value,\n major: isMajor(value),\n significand: significand\n });\n\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n\n var lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand: significand\n });\n return ticks;\n}\n\nvar LogarithmicScale = /*#__PURE__*/function (_Scale3) {\n _inherits(LogarithmicScale, _Scale3);\n\n var _super22 = _createSuper(LogarithmicScale);\n\n function LogarithmicScale(cfg) {\n var _this38;\n\n _classCallCheck(this, LogarithmicScale);\n\n _this38 = _super22.call(this, cfg);\n _this38.start = undefined;\n _this38.end = undefined;\n _this38._startValue = undefined;\n _this38._valueRange = 0;\n return _this38;\n }\n\n _createClass(LogarithmicScale, [{\n key: \"parse\",\n value: function parse(raw, index) {\n var value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n }, {\n key: \"determineDataLimits\",\n value: function determineDataLimits() {\n var _this$getMinMax3 = this.getMinMax(true),\n min = _this$getMinMax3.min,\n max = _this$getMinMax3.max;\n\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n }, {\n key: \"handleTickRangeOptions\",\n value: function handleTickRangeOptions() {\n var _this$getUserBounds4 = this.getUserBounds(),\n minDefined = _this$getUserBounds4.minDefined,\n maxDefined = _this$getUserBounds4.maxDefined;\n\n var min = this.min;\n var max = this.max;\n\n var setMin = function setMin(v) {\n return min = minDefined ? min : v;\n };\n\n var setMax = function setMax(v) {\n return max = maxDefined ? max : v;\n };\n\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n }, {\n key: \"buildTicks\",\n value: function buildTicks() {\n var opts = this.options;\n var generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n var ticks = generateTicks(generationOptions, this);\n\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n }, {\n key: \"getLabelForValue\",\n value: function getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n }, {\n key: \"configure\",\n value: function configure() {\n var start = this.min;\n\n _get(_getPrototypeOf(LogarithmicScale.prototype), \"configure\", this).call(this);\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n }, {\n key: \"getPixelForValue\",\n value: function getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n\n if (value === null || isNaN(value)) {\n return NaN;\n }\n\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n }, {\n key: \"getValueForPixel\",\n value: function getValueForPixel(pixel) {\n var decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n }]);\n\n return LogarithmicScale;\n}(Scale);\n\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n var tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n var padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\nfunction fitWithPointLabels(scale) {\n var orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n var limits = Object.assign({}, orig);\n var labelSizes = [];\n var padding = [];\n var valueCount = scale._pointLabels.length;\n var pointLabelOpts = scale.options.pointLabels;\n var additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (var i = 0; i < valueCount; i++) {\n var opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n var pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n var plFont = toFont(opts.font);\n var textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n var angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n\n var angle = Math.round(toDegrees(angleRadians));\n var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n var sin = Math.abs(Math.sin(angle));\n var cos = Math.abs(Math.cos(angle));\n var x = 0;\n var y = 0;\n\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n var outerDistance = scale.drawingArea;\n var extra = itemOpts.extra,\n additionalAngle = itemOpts.additionalAngle,\n padding = itemOpts.padding,\n size = itemOpts.size;\n var pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n var angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n var y = yForAngle(pointLabelPosition.y, size.h, angle);\n var textAlign = getTextAlignForAngle(angle);\n var left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y: y,\n textAlign: textAlign,\n left: left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n\n var left = item.left,\n top = item.top,\n right = item.right,\n bottom = item.bottom;\n\n var apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n var items = [];\n var valueCount = scale._pointLabels.length;\n var opts = scale.options;\n var _opts$pointLabels = opts.pointLabels,\n centerPointLabels = _opts$pointLabels.centerPointLabels,\n display = _opts$pointLabels.display;\n var itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n var area;\n\n for (var i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n var item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n\n if (item.visible) {\n area = item;\n }\n }\n }\n\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n var left = item.left,\n top = item.top,\n right = item.right,\n bottom = item.bottom;\n var backdropColor = opts.backdropColor;\n\n if (!isNullOrUndef(backdropColor)) {\n var borderRadius = toTRBLCorners(opts.borderRadius);\n var padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n var backdropLeft = left - padding.left;\n var backdropTop = top - padding.top;\n var backdropWidth = right - left + padding.width;\n var backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(function (v) {\n return v !== 0;\n })) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n var ctx = scale.ctx,\n pointLabels = scale.options.pointLabels;\n\n for (var i = labelCount - 1; i >= 0; i--) {\n var item = scale._pointLabelItems[i];\n\n if (!item.visible) {\n continue;\n }\n\n var optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n var plFont = toFont(optsAtIndex.font);\n var x = item.x,\n y = item.y,\n textAlign = item.textAlign;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n var ctx = scale.ctx;\n\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n var pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (var i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n var ctx = scale.ctx;\n var circular = gridLineOpts.circular;\n var color = gridLineOpts.color,\n lineWidth = gridLineOpts.lineWidth;\n\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label: label,\n index: index,\n type: 'pointLabel'\n });\n}\n\nvar RadialLinearScale = /*#__PURE__*/function (_LinearScaleBase2) {\n _inherits(RadialLinearScale, _LinearScaleBase2);\n\n var _super23 = _createSuper(RadialLinearScale);\n\n function RadialLinearScale(cfg) {\n var _this39;\n\n _classCallCheck(this, RadialLinearScale);\n\n _this39 = _super23.call(this, cfg);\n _this39.xCenter = undefined;\n _this39.yCenter = undefined;\n _this39.drawingArea = undefined;\n _this39._pointLabels = [];\n _this39._pointLabelItems = [];\n return _this39;\n }\n\n _createClass(RadialLinearScale, [{\n key: \"setDimensions\",\n value: function setDimensions() {\n var padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n var w = this.width = this.maxWidth - padding.width;\n var h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n }, {\n key: \"determineDataLimits\",\n value: function determineDataLimits() {\n var _this$getMinMax4 = this.getMinMax(false),\n min = _this$getMinMax4.min,\n max = _this$getMinMax4.max;\n\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n }, {\n key: \"computeTickLimit\",\n value: function computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n }, {\n key: \"generateTickLabels\",\n value: function generateTickLabels(ticks) {\n var _this40 = this;\n\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map(function (value, index) {\n var label = callback(_this40.options.pointLabels.callback, [value, index], _this40);\n return label || label === 0 ? label : '';\n }).filter(function (v, i) {\n return _this40.chart.getDataVisibility(i);\n });\n }\n }, {\n key: \"fit\",\n value: function fit() {\n var opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n }, {\n key: \"setCenterPoint\",\n value: function setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n }, {\n key: \"getIndexAngle\",\n value: function getIndexAngle(index) {\n var angleMultiplier = TAU / (this._pointLabels.length || 1);\n var startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n }, {\n key: \"getDistanceFromCenterForValue\",\n value: function getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n var scalingFactor = this.drawingArea / (this.max - this.min);\n\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n\n return (value - this.min) * scalingFactor;\n }\n }, {\n key: \"getValueForDistanceFromCenter\",\n value: function getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n var scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n }, {\n key: \"getPointLabelContext\",\n value: function getPointLabelContext(index) {\n var pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n var pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n }, {\n key: \"getPointPosition\",\n value: function getPointPosition(index, distanceFromCenter) {\n var additionalAngle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle: angle\n };\n }\n }, {\n key: \"getPointPositionForValue\",\n value: function getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n }, {\n key: \"getBasePosition\",\n value: function getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n }, {\n key: \"getPointLabelPosition\",\n value: function getPointLabelPosition(index) {\n var _this$_pointLabelItem = this._pointLabelItems[index],\n left = _this$_pointLabelItem.left,\n top = _this$_pointLabelItem.top,\n right = _this$_pointLabelItem.right,\n bottom = _this$_pointLabelItem.bottom;\n return {\n left: left,\n top: top,\n right: right,\n bottom: bottom\n };\n }\n }, {\n key: \"drawBackground\",\n value: function drawBackground() {\n var _this$options16 = this.options,\n backgroundColor = _this$options16.backgroundColor,\n circular = _this$options16.grid.circular;\n\n if (backgroundColor) {\n var ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n }, {\n key: \"drawGrid\",\n value: function drawGrid() {\n var _this41 = this;\n\n var ctx = this.ctx;\n var opts = this.options;\n var angleLines = opts.angleLines,\n grid = opts.grid,\n border = opts.border;\n var labelCount = this._pointLabels.length;\n var i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach(function (tick, index) {\n if (index !== 0 || index === 0 && _this41.min < 0) {\n offset = _this41.getDistanceFromCenterForValue(tick.value);\n\n var context = _this41.getContext(index);\n\n var optsAtIndex = grid.setContext(context);\n var optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(_this41, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n var optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n var color = optsAtIndex.color,\n lineWidth = optsAtIndex.lineWidth;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n }, {\n key: \"drawBorder\",\n value: function drawBorder() {}\n }, {\n key: \"drawLabels\",\n value: function drawLabels() {\n var _this42 = this;\n\n var ctx = this.ctx;\n var opts = this.options;\n var tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n var startAngle = this.getIndexAngle(0);\n var offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach(function (tick, index) {\n if (index === 0 && _this42.min >= 0 && !opts.reverse) {\n return;\n }\n\n var optsAtIndex = tickOpts.setContext(_this42.getContext(index));\n var tickFont = toFont(optsAtIndex.font);\n offset = _this42.getDistanceFromCenterForValue(_this42.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n var padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n }, {\n key: \"drawTitle\",\n value: function drawTitle() {}\n }]);\n\n return RadialLinearScale;\n}(LinearScaleBase);\n\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback: function callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\nvar INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\nvar UNITS = /* #__PURE__ */Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n return a - b;\n}\n\nfunction _parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n var adapter = scale._adapter;\n var _scale$_parseOpts = scale._parseOpts,\n parser = _scale$_parseOpts.parser,\n round = _scale$_parseOpts.round,\n isoWeekday = _scale$_parseOpts.isoWeekday;\n var value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n var ilen = UNITS.length;\n\n for (var i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n var interval = INTERVALS[UNITS[i]];\n var factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (var i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n var unit = UNITS[i];\n\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n var _lookup2 = _lookup(timestamps, time),\n lo = _lookup2.lo,\n hi = _lookup2.hi;\n\n var timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n var adapter = scale._adapter;\n var first = +adapter.startOf(ticks[0].value, majorUnit);\n var last = ticks[ticks.length - 1].value;\n var major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n\n return ticks;\n}\n\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n var ticks = [];\n var map = {};\n var ilen = values.length;\n var i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value: value,\n major: false\n });\n }\n\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nvar TimeScale = /*#__PURE__*/function (_Scale4) {\n _inherits(TimeScale, _Scale4);\n\n var _super24 = _createSuper(TimeScale);\n\n function TimeScale(props) {\n var _this43;\n\n _classCallCheck(this, TimeScale);\n\n _this43 = _super24.call(this, props);\n _this43._cache = {\n data: [],\n labels: [],\n all: []\n };\n _this43._unit = 'day';\n _this43._majorUnit = undefined;\n _this43._offsets = {};\n _this43._normalized = false;\n _this43._parseOpts = undefined;\n return _this43;\n }\n\n _createClass(TimeScale, [{\n key: \"init\",\n value: function init(scaleOpts) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var time = scaleOpts.time || (scaleOpts.time = {});\n var adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n _get(_getPrototypeOf(TimeScale.prototype), \"init\", this).call(this, scaleOpts);\n\n this._normalized = opts.normalized;\n }\n }, {\n key: \"parse\",\n value: function parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n\n return _parse(this, raw);\n }\n }, {\n key: \"beforeLayout\",\n value: function beforeLayout() {\n _get(_getPrototypeOf(TimeScale.prototype), \"beforeLayout\", this).call(this);\n\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n }, {\n key: \"determineDataLimits\",\n value: function determineDataLimits() {\n var options = this.options;\n var adapter = this._adapter;\n var unit = options.time.unit || 'day';\n\n var _this$getUserBounds5 = this.getUserBounds(),\n min = _this$getUserBounds5.min,\n max = _this$getUserBounds5.max,\n minDefined = _this$getUserBounds5.minDefined,\n maxDefined = _this$getUserBounds5.maxDefined;\n\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n }, {\n key: \"_getLabelBounds\",\n value: function _getLabelBounds() {\n var arr = this.getLabelTimestamps();\n var min = Number.POSITIVE_INFINITY;\n var max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n\n return {\n min: min,\n max: max\n };\n }\n }, {\n key: \"buildTicks\",\n value: function buildTicks() {\n var options = this.options;\n var timeOpts = options.time;\n var tickOpts = options.ticks;\n var timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n var min = this.min;\n var max = this.max;\n\n var ticks = _filterBetween(timestamps, min, max);\n\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n }, {\n key: \"afterAutoSkip\",\n value: function afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(function (tick) {\n return +tick.value;\n }));\n }\n }\n }, {\n key: \"initOffsets\",\n value: function initOffsets() {\n var timestamps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var start = 0;\n var end = 0;\n var first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n\n var limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start: start,\n end: end,\n factor: 1 / (start + 1 + end)\n };\n }\n }, {\n key: \"_generate\",\n value: function _generate() {\n var adapter = this._adapter;\n var min = this.min;\n var max = this.max;\n var options = this.options;\n var timeOpts = options.time;\n var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n var stepSize = valueOrDefault(options.ticks.stepSize, 1);\n var weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n var hasWeekday = isNumber(weekday) || weekday === true;\n var ticks = {};\n var first = min;\n var time, count;\n\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n var timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n return Object.keys(ticks).sort(sorter).map(function (x) {\n return +x;\n });\n }\n }, {\n key: \"getLabelForValue\",\n value: function getLabelForValue(value) {\n var adapter = this._adapter;\n var timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n }, {\n key: \"format\",\n value: function format(value, _format) {\n var options = this.options;\n var formats = options.time.displayFormats;\n var unit = this._unit;\n var fmt = _format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n }, {\n key: \"_tickFormatFunction\",\n value: function _tickFormatFunction(time, index, ticks, format) {\n var options = this.options;\n var formatter = options.ticks.callback;\n\n if (formatter) {\n return callback(formatter, [time, index, ticks], this);\n }\n\n var formats = options.time.displayFormats;\n var unit = this._unit;\n var majorUnit = this._majorUnit;\n var minorFormat = unit && formats[unit];\n var majorFormat = majorUnit && formats[majorUnit];\n var tick = ticks[index];\n var major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n }, {\n key: \"generateTickLabels\",\n value: function generateTickLabels(ticks) {\n var i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n }, {\n key: \"getDecimalForValue\",\n value: function getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n }, {\n key: \"getPixelForValue\",\n value: function getPixelForValue(value) {\n var offsets = this._offsets;\n var pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n }, {\n key: \"getValueForPixel\",\n value: function getValueForPixel(pixel) {\n var offsets = this._offsets;\n var pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n }, {\n key: \"_getLabelSize\",\n value: function _getLabelSize(label) {\n var ticksOpts = this.options.ticks;\n var tickLabelWidth = this.ctx.measureText(label).width;\n var angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n var cosRotation = Math.cos(angle);\n var sinRotation = Math.sin(angle);\n\n var tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n }, {\n key: \"_getLabelCapacity\",\n value: function _getLabelCapacity(exampleTime) {\n var timeOpts = this.options.time;\n var displayFormats = timeOpts.displayFormats;\n var format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n\n var exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n\n var size = this._getLabelSize(exampleLabel);\n\n var capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n }, {\n key: \"getDataTimestamps\",\n value: function getDataTimestamps() {\n var timestamps = this._cache.data || [];\n var i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n var metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return this._cache.data = this.normalize(timestamps);\n }\n }, {\n key: \"getLabelTimestamps\",\n value: function getLabelTimestamps() {\n var timestamps = this._cache.labels || [];\n var i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n var labels = this.getLabels();\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(_parse(this, labels[i]));\n }\n\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n }, {\n key: \"normalize\",\n value: function normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n }]);\n\n return TimeScale;\n}(Scale);\n\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n var lo = 0;\n var hi = table.length - 1;\n var prevSource, nextSource, prevTarget, nextTarget;\n\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n var _lookupByKey2 = _lookupByKey(table, 'pos', val);\n\n lo = _lookupByKey2.lo;\n hi = _lookupByKey2.hi;\n }\n\n var _table$lo = table[lo];\n prevSource = _table$lo.pos;\n prevTarget = _table$lo.time;\n var _table$hi = table[hi];\n nextSource = _table$hi.pos;\n nextTarget = _table$hi.time;\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n var _lookupByKey3 = _lookupByKey(table, 'time', val);\n\n lo = _lookupByKey3.lo;\n hi = _lookupByKey3.hi;\n }\n\n var _table$lo2 = table[lo];\n prevSource = _table$lo2.time;\n prevTarget = _table$lo2.pos;\n var _table$hi2 = table[hi];\n nextSource = _table$hi2.time;\n nextTarget = _table$hi2.pos;\n }\n\n var span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nvar TimeSeriesScale = /*#__PURE__*/function (_TimeScale) {\n _inherits(TimeSeriesScale, _TimeScale);\n\n var _super25 = _createSuper(TimeSeriesScale);\n\n function TimeSeriesScale(props) {\n var _this44;\n\n _classCallCheck(this, TimeSeriesScale);\n\n _this44 = _super25.call(this, props);\n _this44._table = [];\n _this44._minPos = undefined;\n _this44._tableRange = undefined;\n return _this44;\n }\n\n _createClass(TimeSeriesScale, [{\n key: \"initOffsets\",\n value: function initOffsets() {\n var timestamps = this._getTimestampsForTable();\n\n var table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n\n _get(_getPrototypeOf(TimeSeriesScale.prototype), \"initOffsets\", this).call(this, timestamps);\n }\n }, {\n key: \"buildLookupTable\",\n value: function buildLookupTable(timestamps) {\n var min = this.min,\n max = this.max;\n var items = [];\n var table = [];\n var i, ilen, prev, curr, next;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n\n if (items.length < 2) {\n return [{\n time: min,\n pos: 0\n }, {\n time: max,\n pos: 1\n }];\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n\n return table;\n }\n }, {\n key: \"_generate\",\n value: function _generate() {\n var min = this.min;\n var max = this.max;\n\n var timestamps = _get(_getPrototypeOf(TimeSeriesScale.prototype), \"getDataTimestamps\", this).call(this);\n\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n\n return timestamps.sort(function (a, b) {\n return a - b;\n });\n }\n }, {\n key: \"_getTimestampsForTable\",\n value: function _getTimestampsForTable() {\n var timestamps = this._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n var data = this.getDataTimestamps();\n var label = this.getLabelTimestamps();\n\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n }, {\n key: \"getDecimalForValue\",\n value: function getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n }, {\n key: \"getValueForPixel\",\n value: function getValueForPixel(pixel) {\n var offsets = this._offsets;\n var decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n }]);\n\n return TimeSeriesScale;\n}(TimeScale);\n\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\nvar scales = /*#__PURE__*/Object.freeze({\n __proto__: null,\n CategoryScale: CategoryScale,\n LinearScale: LinearScale,\n LogarithmicScale: LogarithmicScale,\n RadialLinearScale: RadialLinearScale,\n TimeScale: TimeScale,\n TimeSeriesScale: TimeSeriesScale\n});\nvar registerables = [controllers, elements, plugins, scales];\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\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 _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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\nimport { Chart, registerables } from '../dist/chart.js';\nChart.register.apply(Chart, _toConsumableArray(registerables));\nexport * from '../dist/chart.js';\nexport default Chart;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\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 function toDate(argument) {\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 argument.constructor(+argument);\n } else if (typeof argument === \"number\" || argStr === \"[object Number]\" || typeof argument === \"string\" || argStr === \"[object String]\") {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n} // Fallback for modularized imports:\n\nexport default toDate;","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\n\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n} // Fallback for modularized imports:\n\nexport default getDefaultOptions;","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 aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\"\n },\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\"\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 var formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};","export function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\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.mjs\";\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};\nexport var 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};","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 var formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\nexport function buildLocalizeFn(args) {\n return function (value, options) {\n var context = options !== null && options !== void 0 && 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 !== null && options !== void 0 && 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 !== null && options !== void 0 && 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(value) : value; // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\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\"]\n}; // 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\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\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\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 // `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\nexport var 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 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};","export function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\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 key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\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};\nexport var 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};","export function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0]; // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\n\nexport var enUS = {\n code: \"en-US\",\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}; // Fallback for modularized imports:\n\nexport default enUS;","var dateLongFormatter = 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\nvar timeLongFormatter = function 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\nvar dateTimeLongFormatter = function 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\nexport var longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};","var dayOfYearTokenRE = /^D+$/;\nvar weekYearTokenRE = /^Y+$/;\nvar throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\nexport function warnOrThrowProtectedError(token, format, input) {\n var _message = message(token, format, input);\n\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n var subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return \"Use `\".concat(token.toLowerCase(), \"` instead of `\").concat(token, \"` (in `\").concat(format, \"`) for formatting \").concat(subject, \" to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\");\n}","import { constructFrom } from \"./constructFrom.mjs\";\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam DateInputType - The input `Date` type derived from the passed argument.\n * @typeParam DateOutputType - The output `Date` type derived from the passed constructor.\n *\n * @param fromDate - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\n\nexport function transpose(fromDate, constructor) {\n var date = constructor instanceof Date ? constructFrom(constructor, 0) : new constructor(0);\n date.setFullYear(fromDate.getFullYear(), fromDate.getMonth(), fromDate.getDate());\n date.setHours(fromDate.getHours(), fromDate.getMinutes(), fromDate.getSeconds(), fromDate.getMilliseconds());\n return date;\n} // Fallback for modularized imports:\n\nexport default transpose;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { transpose } from \"../../transpose.mjs\";\nimport { constructFrom } from \"../../constructFrom.mjs\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n\n this.subPriority = 0;\n }\n\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n\n var _super = _createSuper(ValueSetter);\n\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n\n _classCallCheck(this, ValueSetter);\n\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n\n return _this;\n }\n\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n }]);\n\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n\n function DateToSystemTimezoneSetter() {\n var _this2;\n\n _classCallCheck(this, DateToSystemTimezoneSetter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _this2.priority = TIMEZONE_UNIT_PRIORITY;\n _this2.subPriority = -1;\n return _this2;\n }\n\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, Date));\n }\n }]);\n\n return DateToSystemTimezoneSetter;\n}(Setter);","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nimport { ValueSetter } from \"./Setter.mjs\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n }\n\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n\n return Parser;\n}();","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n\n var _super = _createSuper(EraParser);\n\n function EraParser() {\n var _this;\n\n _classCallCheck(this, EraParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 140;\n _this.incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return match.era(dateString, {\n width: \"abbreviated\"\n }) || match.era(dateString, {\n width: \"narrow\"\n });\n // A, B\n\n case \"GGGGG\":\n return match.era(dateString, {\n width: \"narrow\"\n });\n // Anno Domini, Before Christ\n\n case \"GGGG\":\n default:\n return match.era(dateString, {\n width: \"wide\"\n }) || match.era(dateString, {\n width: \"abbreviated\"\n }) || match.era(dateString, {\n width: \"narrow\"\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return EraParser;\n}(Parser);","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport var daysInWeek = 7;\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\n\nexport var daysInYear = 365.2425;\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\n\nexport var minTime = -maxTime;\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\n\nexport var millisecondsInWeek = 604800000;\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\n\nexport var millisecondsInDay = 86400000;\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\n\nexport var minutesInYear = 525600;\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\n\nexport var minutesInMonth = 43200;\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\n\nexport var minutesInDay = 1440;\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\n\nexport var minutesInHour = 60;\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\n\nexport var monthsInQuarter = 3;\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\n\nexport var monthsInYear = 12;\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\n\nexport var quartersInYear = 4;\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\n\nexport var secondsInHour = 3600;\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\n\nexport var secondsInMinute = 60;\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\n\nexport var secondsInDay = secondsInHour * 24;\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\n\nexport var secondsInWeek = secondsInDay * 7;\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\n\nexport var secondsInYear = secondsInDay * daysInYear;\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\n\nexport var secondsInMonth = secondsInYear / 12;\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\n\nexport var secondsInQuarter = secondsInMonth * 3;","export var 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};\nexport var 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};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants.mjs\";\nimport { numericPatterns } from \"./constants.mjs\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.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: dateString.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 * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\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}\nexport function 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.trunc(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}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\"; // 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\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n\n var _super = _createSuper(YearParser);\n\n function YearParser() {\n var _this;\n\n _classCallCheck(this, YearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 130;\n _this.incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\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 mapValue(parseNDigits(4, dateString), valueCallback);\n\n case \"yo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"year\"\n }), valueCallback);\n\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(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.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return YearParser;\n}(Parser);","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport function startOfWeek(date, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = (_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0;\n\n var _date = toDate(date);\n\n var day = _date.getDay();\n\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n\n _date.setHours(0, 0, 0, 0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfWeek;","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\n\nexport function getWeekYear(date, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n var _date = toDate(date);\n\n var year = _date.getFullYear();\n\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = (_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1;\n var firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n} // Fallback for modularized imports:\n\nexport default getWeekYear;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { getWeekYear } from \"../../../getWeekYear.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.mjs\"; // Local week-numbering year\n\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n\n var _super = _createSuper(LocalWeekYearParser);\n\n function LocalWeekYearParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 130;\n _this.incompatibleTokens = [\"y\", \"R\", \"u\", \"Q\", \"q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"i\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\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 mapValue(parseNDigits(4, dateString), valueCallback);\n\n case \"Yo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"year\"\n }), valueCallback);\n\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n var year = !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n }]);\n\n return LocalWeekYearParser;\n}(Parser);","import { startOfWeek } from \"./startOfWeek.mjs\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport function startOfISOWeek(date) {\n return startOfWeek(date, {\n weekStartsOn: 1\n });\n} // Fallback for modularized imports:\n\nexport default startOfISOWeek;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\"; // ISO week-numbering year\n\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n\n var _super = _createSuper(ISOWeekYearParser);\n\n function ISOWeekYearParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 130;\n _this.incompatibleTokens = [\"G\", \"y\", \"Y\", \"u\", \"Q\", \"q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n }]);\n\n return ISOWeekYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigitsSigned } from \"../utils.mjs\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n\n var _super = _createSuper(ExtendedYearParser);\n\n function ExtendedYearParser() {\n var _this;\n\n _classCallCheck(this, ExtendedYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 130;\n _this.incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return ExtendedYearParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n\n var _super = _createSuper(QuarterParser);\n\n function QuarterParser() {\n var _this;\n\n _classCallCheck(this, QuarterParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 120;\n _this.incompatibleTokens = [\"Y\", \"R\", \"q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\":\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n\n case \"Qo\":\n return match.ordinalNumber(dateString, {\n unit: \"quarter\"\n });\n // Q1, Q2, Q3, Q4\n\n case \"QQQ\":\n return match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.quarter(dateString, {\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(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // 1st quarter, 2nd quarter, ...\n\n case \"QQQQ\":\n default:\n return match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return QuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits } from \"../utils.mjs\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n\n var _super = _createSuper(StandAloneQuarterParser);\n\n function StandAloneQuarterParser() {\n var _this;\n\n _classCallCheck(this, StandAloneQuarterParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 120;\n _this.incompatibleTokens = [\"Y\", \"R\", \"Q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\":\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n\n case \"qo\":\n return match.ordinalNumber(dateString, {\n unit: \"quarter\"\n });\n // Q1, Q2, Q3, Q4\n\n case \"qqq\":\n return match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.quarter(dateString, {\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(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // 1st quarter, 2nd quarter, ...\n\n case \"qqqq\":\n default:\n return match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneQuarterParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n\n var _super = _createSuper(MonthParser);\n\n function MonthParser() {\n var _this;\n\n _classCallCheck(this, MonthParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"L\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n _this.priority = 110;\n return _this;\n }\n\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case \"Mo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"month\"\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\n case \"MMM\":\n return match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // J, F, ..., D\n\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // January, February, ..., December\n\n case \"MMMM\":\n default:\n return match.month(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return MonthParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n\n var _super = _createSuper(StandAloneMonthParser);\n\n function StandAloneMonthParser() {\n var _this;\n\n _classCallCheck(this, StandAloneMonthParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 110;\n _this.incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"M\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n\n case \"Lo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"month\"\n }), valueCallback);\n // Jan, Feb, ..., Dec\n\n case \"LLL\":\n return match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // J, F, ..., D\n\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // January, February, ..., December\n\n case \"LLLL\":\n default:\n return match.month(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneMonthParser;\n}(Parser);","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport function startOfWeekYear(date, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = (_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1;\n var year = getWeekYear(date, options);\n var firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n\n var _date = startOfWeek(firstWeek, options);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfWeekYear;","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n var _date = toDate(date);\n\n var diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options); // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n\n return Math.round(diff / millisecondsInWeek) + 1;\n} // Fallback for modularized imports:\n\nexport default getWeek;","import { getWeek } from \"./getWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\n\nexport function setWeek(date, week, options) {\n var _date = toDate(date);\n\n var diff = getWeek(_date, options) - week;\n\n _date.setDate(_date.getDate() - diff * 7);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default setWeek;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { setWeek } from \"../../../setWeek.mjs\";\nimport { startOfWeek } from \"../../../startOfWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\"; // Local week of year\n\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n\n var _super = _createSuper(LocalWeekParser);\n\n function LocalWeekParser() {\n var _this;\n\n _classCallCheck(this, LocalWeekParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 100;\n _this.incompatibleTokens = [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"i\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n\n case \"wo\":\n return match.ordinalNumber(dateString, {\n unit: \"week\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n }]);\n\n return LocalWeekParser;\n}(Parser);","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport function getISOWeekYear(date) {\n var _date = toDate(date);\n\n var year = _date.getFullYear();\n\n var fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n} // Fallback for modularized imports:\n\nexport default getISOWeekYear;","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport function startOfISOWeekYear(date) {\n var year = getISOWeekYear(date);\n var fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n} // Fallback for modularized imports:\n\nexport default startOfISOWeekYear;","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport function getISOWeek(date) {\n var _date = toDate(date);\n\n var diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date); // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n\n return Math.round(diff / millisecondsInWeek) + 1;\n} // Fallback for modularized imports:\n\nexport default getISOWeek;","import { getISOWeek } from \"./getISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\n\nexport function setISOWeek(date, week) {\n var _date = toDate(date);\n\n var diff = getISOWeek(_date) - week;\n\n _date.setDate(_date.getDate() - diff * 7);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default setISOWeek;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { setISOWeek } from \"../../../setISOWeek.mjs\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.mjs\";\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\"; // ISO week of year\n\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n\n var _super = _createSuper(ISOWeekParser);\n\n function ISOWeekParser() {\n var _this;\n\n _classCallCheck(this, ISOWeekParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 100;\n _this.incompatibleTokens = [\"y\", \"Y\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n\n case \"Io\":\n return match.ordinalNumber(dateString, {\n unit: \"week\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n }]);\n\n return ISOWeekParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\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]; // Day of the month\n\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n\n var _super = _createSuper(DateParser);\n\n function DateParser() {\n var _this;\n\n _classCallCheck(this, DateParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 90;\n _this.subPriority = 1;\n _this.incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"w\", \"I\", \"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n\n case \"do\":\n return match.ordinalNumber(dateString, {\n unit: \"date\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getMonth();\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 }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DateParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n\n var _super = _createSuper(DayOfYearParser);\n\n function DayOfYearParser() {\n var _this;\n\n _classCallCheck(this, DayOfYearParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 90;\n _this.subpriority = 1;\n _this.incompatibleTokens = [\"Y\", \"R\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"I\", \"d\", \"E\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n\n case \"Do\":\n return match.ordinalNumber(dateString, {\n unit: \"date\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getFullYear();\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 }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DayOfYearParser;\n}(Parser);","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport function addDays(date, amount) {\n var _date = toDate(date);\n\n if (isNaN(amount)) return constructFrom(date, NaN);\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n\n _date.setDate(_date.getDate() + amount);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default addDays;","import { addDays } from \"./addDays.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport function setDay(date, day, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = (_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0;\n\n var _date = toDate(date);\n\n var currentDay = _date.getDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var delta = 7 - weekStartsOn;\n var diff = day < 0 || day > 6 ? day - (currentDay + delta) % 7 : (dayIndex + delta) % 7 - (currentDay + delta) % 7;\n return addDays(_date, diff);\n} // Fallback for modularized imports:\n\nexport default setDay;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\"; // Day of week\n\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n\n var _super = _createSuper(DayParser);\n\n function DayParser() {\n var _this;\n\n _classCallCheck(this, DayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 90;\n _this.incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // T\n\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n\n case \"EEEEEE\":\n return match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tuesday\n\n case \"EEEE\":\n default:\n return match.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return DayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\"; // Local day of week\n\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n\n var _super = _createSuper(LocalDayParser);\n\n function LocalDayParser() {\n var _this;\n\n _classCallCheck(this, LocalDayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 90;\n _this.incompatibleTokens = [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"E\", \"i\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\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 mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case \"eo\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"day\"\n }), valueCallback);\n // Tue\n\n case \"eee\":\n return match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // T\n\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tu\n\n case \"eeeeee\":\n return match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n // Tuesday\n\n case \"eeee\":\n default:\n return match.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return LocalDayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { setDay } from \"../../../setDay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\"; // Stand-alone local day of week\n\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n\n var _super = _createSuper(StandAloneLocalDayParser);\n\n function StandAloneLocalDayParser() {\n var _this;\n\n _classCallCheck(this, StandAloneLocalDayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 90;\n _this.incompatibleTokens = [\"y\", \"R\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"I\", \"d\", \"D\", \"E\", \"i\", \"e\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\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 mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n\n case \"co\":\n return mapValue(match.ordinalNumber(dateString, {\n unit: \"day\"\n }), valueCallback);\n // Tue\n\n case \"ccc\":\n return match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // T\n\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tu\n\n case \"cccccc\":\n return match.day(dateString, {\n width: \"short\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n // Tuesday\n\n case \"cccc\":\n default:\n return match.day(dateString, {\n width: \"wide\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"standalone\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\"\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return StandAloneLocalDayParser;\n}(Parser);","import { toDate } from \"./toDate.mjs\";\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\n\nexport function getISODay(date) {\n var _date = toDate(date);\n\n var day = _date.getDay();\n\n if (day === 0) {\n day = 7;\n }\n\n return day;\n} // Fallback for modularized imports:\n\nexport default getISODay;","import { addDays } from \"./addDays.mjs\";\nimport { getISODay } from \"./getISODay.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\n\nexport function setISODay(date, day) {\n var _date = toDate(date);\n\n var currentDay = getISODay(_date);\n var diff = day - currentDay;\n return addDays(_date, diff);\n} // Fallback for modularized imports:\n\nexport default setISODay;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { setISODay } from \"../../../setISODay.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\"; // ISO day of week\n\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n\n var _super = _createSuper(ISODayParser);\n\n function ISODayParser() {\n var _this;\n\n _classCallCheck(this, ISODayParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 90;\n _this.incompatibleTokens = [\"y\", \"Y\", \"u\", \"q\", \"Q\", \"M\", \"L\", \"w\", \"d\", \"D\", \"E\", \"e\", \"c\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\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, dateString);\n // 2nd\n\n case \"io\":\n return match.ordinalNumber(dateString, {\n unit: \"day\"\n });\n // Tue\n\n case \"iii\":\n return mapValue(match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n // T\n\n case \"iiiii\":\n return mapValue(match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n // Tu\n\n case \"iiiiii\":\n return mapValue(match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n // Tuesday\n\n case \"iiii\":\n default:\n return mapValue(match.day(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"short\",\n context: \"formatting\"\n }) || match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n }]);\n\n return ISODayParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n\n var _super = _createSuper(AMPMParser);\n\n function AMPMParser() {\n var _this;\n\n _classCallCheck(this, AMPMParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 80;\n _this.incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n case \"aaaa\":\n default:\n return match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return AMPMParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n\n var _super = _createSuper(AMPMMidnightParser);\n\n function AMPMMidnightParser() {\n var _this;\n\n _classCallCheck(this, AMPMMidnightParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 80;\n _this.incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n case \"bbbb\":\n default:\n return match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return AMPMMidnightParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { dayPeriodEnumToHours } from \"../utils.mjs\"; // in the morning, in the afternoon, in the evening, at night\n\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n\n var _super = _createSuper(DayPeriodParser);\n\n function DayPeriodParser() {\n var _this;\n\n _classCallCheck(this, DayPeriodParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 80;\n _this.incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n\n case \"BBBB\":\n default:\n return match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\"\n }) || match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\"\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n\n return DayPeriodParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n\n var _super = _createSuper(Hour1to12Parser);\n\n function Hour1to12Parser() {\n var _this;\n\n _classCallCheck(this, Hour1to12Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 70;\n _this.incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n\n case \"ho\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getHours() >= 12;\n\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n\n return date;\n }\n }]);\n\n return Hour1to12Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n\n var _super = _createSuper(Hour0to23Parser);\n\n function Hour0to23Parser() {\n var _this;\n\n _classCallCheck(this, Hour0to23Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 70;\n _this.incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n\n case \"Ho\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n }]);\n\n return Hour0to23Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n\n var _super = _createSuper(Hour0To11Parser);\n\n function Hour0To11Parser() {\n var _this;\n\n _classCallCheck(this, Hour0To11Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 70;\n _this.incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n\n case \"Ko\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getHours() >= 12;\n\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n\n return date;\n }\n }]);\n\n return Hour0To11Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n\n var _super = _createSuper(Hour1To24Parser);\n\n function Hour1To24Parser() {\n var _this;\n\n _classCallCheck(this, Hour1To24Parser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 70;\n _this.incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n return _this;\n }\n\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n\n case \"ko\":\n return match.ordinalNumber(dateString, {\n unit: \"hour\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n\n return Hour1To24Parser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n\n var _super = _createSuper(MinuteParser);\n\n function MinuteParser() {\n var _this;\n\n _classCallCheck(this, MinuteParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 60;\n _this.incompatibleTokens = [\"t\", \"T\"];\n return _this;\n }\n\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n\n case \"mo\":\n return match.ordinalNumber(dateString, {\n unit: \"minute\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n }]);\n\n return MinuteParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { numericPatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseNDigits, parseNumericPattern } from \"../utils.mjs\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n\n var _super = _createSuper(SecondParser);\n\n function SecondParser() {\n var _this;\n\n _classCallCheck(this, SecondParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 50;\n _this.incompatibleTokens = [\"t\", \"T\"];\n return _this;\n }\n\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n\n case \"so\":\n return match.ordinalNumber(dateString, {\n unit: \"second\"\n });\n\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n }]);\n\n return SecondParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { Parser } from \"../Parser.mjs\";\nimport { mapValue, parseNDigits } from \"../utils.mjs\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n\n var _super = _createSuper(FractionOfSecondParser);\n\n function FractionOfSecondParser() {\n var _this;\n\n _classCallCheck(this, FractionOfSecondParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 30;\n _this.incompatibleTokens = [\"t\", \"T\"];\n return _this;\n }\n\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.trunc(value * Math.pow(10, -token.length + 3));\n };\n\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n }]);\n\n return FractionOfSecondParser;\n}(Parser);","import { toDate } from \"../toDate.mjs\";\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 function getTimezoneOffsetInMilliseconds(date) {\n var _date = toDate(date);\n\n var utcDate = new Date(Date.UTC(_date.getFullYear(), _date.getMonth(), _date.getDate(), _date.getHours(), _date.getMinutes(), _date.getSeconds(), _date.getMilliseconds()));\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\n\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneWithZParser);\n\n function ISOTimezoneWithZParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneWithZParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 10;\n _this.incompatibleTokens = [\"t\", \"T\", \"x\"];\n return _this;\n }\n\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case \"XXXX\":\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case \"XXXXX\":\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, date.getTime() - getTimezoneOffsetInMilliseconds(date) - value);\n }\n }]);\n\n return ISOTimezoneWithZParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.mjs\";\nimport { timezonePatterns } from \"../constants.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseTimezonePattern } from \"../utils.mjs\"; // Timezone (ISO-8601)\n\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n\n var _super = _createSuper(ISOTimezoneParser);\n\n function ISOTimezoneParser() {\n var _this;\n\n _classCallCheck(this, ISOTimezoneParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 10;\n _this.incompatibleTokens = [\"t\", \"T\", \"X\"];\n return _this;\n }\n\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n\n case \"xxxx\":\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n\n case \"xxxxx\":\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, date.getTime() - getTimezoneOffsetInMilliseconds(date) - value);\n }\n }]);\n\n return ISOTimezoneParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n\n var _super = _createSuper(TimestampSecondsParser);\n\n function TimestampSecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampSecondsParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 40;\n _this.incompatibleTokens = \"*\";\n return _this;\n }\n\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return [constructFrom(date, value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n\n return TimestampSecondsParser;\n}(Parser);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { constructFrom } from \"../../../constructFrom.mjs\";\nimport { Parser } from \"../Parser.mjs\";\nimport { parseAnyDigitsSigned } from \"../utils.mjs\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n\n var _super = _createSuper(TimestampMillisecondsParser);\n\n function TimestampMillisecondsParser() {\n var _this;\n\n _classCallCheck(this, TimestampMillisecondsParser);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n _this.priority = 20;\n _this.incompatibleTokens = \"*\";\n return _this;\n }\n\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return [constructFrom(date, value), {\n timestampIsSet: true\n }];\n }\n }]);\n\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./parsers/EraParser.mjs\";\nimport { YearParser } from \"./parsers/YearParser.mjs\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.mjs\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.mjs\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.mjs\";\nimport { QuarterParser } from \"./parsers/QuarterParser.mjs\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.mjs\";\nimport { MonthParser } from \"./parsers/MonthParser.mjs\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.mjs\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.mjs\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.mjs\";\nimport { DateParser } from \"./parsers/DateParser.mjs\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.mjs\";\nimport { DayParser } from \"./parsers/DayParser.mjs\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.mjs\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.mjs\";\nimport { ISODayParser } from \"./parsers/ISODayParser.mjs\";\nimport { AMPMParser } from \"./parsers/AMPMParser.mjs\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.mjs\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.mjs\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.mjs\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.mjs\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.mjs\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.mjs\";\nimport { MinuteParser } from \"./parsers/MinuteParser.mjs\";\nimport { SecondParser } from \"./parsers/SecondParser.mjs\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.mjs\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.mjs\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.mjs\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.mjs\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.mjs\";\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// eslint-disable-next-line @typescript-eslint/no-explicit-any -- It's ok, we want any here\n\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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(_e) { throw _e; }, 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 = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, 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\nimport { constructFrom } from \"./constructFrom.mjs\";\nimport { getDefaultOptions } from \"./getDefaultOptions.mjs\";\nimport { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, warnOrThrowProtectedError } from \"./_lib/protectedTokens.mjs\";\nimport { parsers } from \"./parse/_lib/parsers.mjs\";\nimport { DateToSystemTimezoneSetter } from \"./parse/_lib/Setter.mjs\"; // Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\n\nexport { longFormatters, parsers };\n/**\n * The {@link parse} function options.\n */\n// 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://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\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, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\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, ..., Sun | 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, Sa, Su | 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, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\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, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 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 `referenceDate`:\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](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](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://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\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://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\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 `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` 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 `referenceDate` 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, `referenceDate` 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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws 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 function parse(dateStr, formatStr, referenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = (_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1;\n var weekStartsOn = (_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0;\n\n if (formatStr === \"\") {\n if (dateStr === \"\") {\n return toDate(referenceDate);\n } else {\n return constructFrom(referenceDate, NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n\n return substring;\n }).join(\"\").match(formattingTokensRegExp);\n var usedTokens = [];\n\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n\n try {\n var _loop = function _loop() {\n var token = _step.value;\n\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\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 = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\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 > 0) {\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.run(dateStr, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return {\n v: constructFrom(referenceDate, NaN)\n };\n }\n\n setters.push(parseResult.setter);\n dateStr = 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 (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return {\n v: constructFrom(referenceDate, NaN)\n };\n }\n }\n };\n\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n\n if (_typeof(_ret) === \"object\") return _ret.v;\n } // Check if the remaining input contains something other than whitespace\n\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return constructFrom(referenceDate, 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 }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(referenceDate);\n\n if (isNaN(date.getTime())) {\n return constructFrom(referenceDate, NaN);\n }\n\n var flags = {};\n\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n\n if (!setter.validate(date, subFnOptions)) {\n return constructFrom(referenceDate, NaN);\n }\n\n var result = setter.set(date, flags, subFnOptions); // Result is tuple (date, flags)\n\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]); // Result is date\n } else {\n date = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return constructFrom(referenceDate, date);\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n} // Fallback for modularized imports:\n\n\nexport default parse;","import { millisecondsInHour, millisecondsInMinute } from \"./constants.mjs\";\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport function parseISO(argument, options) {\n var _options$additionalDi;\n\n var additionalDigits = (_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2;\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // JS parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp(\"^(?:(\\\\d{4}|[+-]\\\\d{\" + (4 + additionalDigits) + \"})|(\\\\d{2}|[+-]\\\\d{\" + (2 + additionalDigits) + \"})$)\");\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: \"\"\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(\",\", \".\")) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === \"+\" ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n} // Fallback for modularized imports:\n\n\nexport default parseISO;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return value instanceof Date || _typeof(value) === \"object\" && Object.prototype.toString.call(value) === \"[object Date]\";\n} // Fallback for modularized imports:\n\nexport default isDate;","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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](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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n\n var _date = toDate(date);\n\n return !isNaN(Number(_date));\n} // Fallback for modularized imports:\n\nexport default isValid;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport function startOfDay(date) {\n var _date = toDate(date);\n\n _date.setHours(0, 0, 0, 0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfDay;","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n var startOfDayLeft = startOfDay(dateLeft);\n var startOfDayRight = startOfDay(dateRight);\n var timestampLeft = +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n} // Fallback for modularized imports:\n\nexport default differenceInCalendarDays;","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\n\nexport function startOfYear(date) {\n var cleanDate = toDate(date);\n\n var _date = constructFrom(date, 0);\n\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n\n _date.setHours(0, 0, 0, 0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfYear;","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { startOfYear } from \"./startOfYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\n\nexport function getDayOfYear(date) {\n var _date = toDate(date);\n\n var diff = differenceInCalendarDays(_date, startOfYear(_date));\n var dayOfYear = diff + 1;\n return dayOfYear;\n} // Fallback for modularized imports:\n\nexport default getDayOfYear;","export function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? \"-\" : \"\";\n var output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\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\nexport var lightFormatters = {\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.getFullYear(); // 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.getMonth();\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.getDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n\n case \"aaa\":\n return dayPeriodEnumValue;\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.getHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getMilliseconds();\n var fractionalSeconds = Math.trunc(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\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/*\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\nexport var formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getFullYear() > 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.getFullYear(); // 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 = getWeekYear(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 = getISOWeekYear(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.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getMonth() + 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.getMonth() + 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.getMonth();\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.getMonth();\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 = getWeek(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 = getISOWeek(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.getDate(), {\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 = getDayOfYear(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.getDay();\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.getDay();\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.getDay();\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.getDay();\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.getHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n\n case \"aaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n }).toLowerCase();\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.getHours();\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 return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n });\n\n case \"bbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\"\n }).toLowerCase();\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.getHours();\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.getHours() % 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.getHours(), {\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.getHours() % 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.getHours();\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.getMinutes(), {\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.getSeconds(), {\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) {\n var timezoneOffset = date.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) {\n var timezoneOffset = date.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) {\n var timezoneOffset = date.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) {\n var timezoneOffset = date.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) {\n var timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize) {\n var timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n var sign = offset > 0 ? \"-\" : \"+\";\n var absOffset = Math.abs(offset);\n var hours = Math.trunc(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\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, delimiter);\n}\n\nfunction formatTimezone(offset) {\n var delimiter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n var sign = offset > 0 ? \"-\" : \"+\";\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, warnOrThrowProtectedError } from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\"; // Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\n\nexport { formatters, longFormatters }; // 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]/;\nexport { format as formatDate };\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\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://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\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, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\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, ..., Sun | 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, Sa, Su | 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, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\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, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | 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 | 01, 02, ..., 11, 00 | |\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, 001, ..., 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 | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 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 | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 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](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](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://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const 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 * const 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 * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport function format(date, formatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = (_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1;\n var weekStartsOn = (_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0;\n var originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n var parts = 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);\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 isToken: false,\n value: \"'\"\n };\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return {\n isToken: false,\n value: cleanEscapedString(substring)\n };\n }\n\n if (formatters[firstCharacter]) {\n return {\n isToken: true,\n value: substring\n };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\"Format string contains an unescaped latin alphabet character `\" + firstCharacter + \"`\");\n }\n\n return {\n isToken: false,\n value: substring\n };\n }); // invoke localize preprocessor (only for french locales at the moment)\n\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n return parts.map(function (part) {\n if (!part.isToken) return part.value;\n var token = part.value;\n\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token) || !(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n var formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n }).join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n} // Fallback for modularized imports:\n\n\nexport default format;","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport function addMilliseconds(date, amount) {\n var timestamp = +toDate(date);\n return constructFrom(date, timestamp + amount);\n} // Fallback for modularized imports:\n\nexport default addMilliseconds;","import { addMilliseconds } from \"./addMilliseconds.mjs\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport function addSeconds(date, amount) {\n return addMilliseconds(date, amount * 1000);\n} // Fallback for modularized imports:\n\nexport default addSeconds;","import { addMilliseconds } from \"./addMilliseconds.mjs\";\nimport { millisecondsInMinute } from \"./constants.mjs\";\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport function addMinutes(date, amount) {\n return addMilliseconds(date, amount * millisecondsInMinute);\n} // Fallback for modularized imports:\n\nexport default addMinutes;","import { addMilliseconds } from \"./addMilliseconds.mjs\";\nimport { millisecondsInHour } from \"./constants.mjs\";\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added.\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport function addHours(date, amount) {\n return addMilliseconds(date, amount * millisecondsInHour);\n} // Fallback for modularized imports:\n\nexport default addHours;","import { addDays } from \"./addDays.mjs\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport function addWeeks(date, amount) {\n var days = amount * 7;\n return addDays(date, days);\n} // Fallback for modularized imports:\n\nexport default addWeeks;","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\n\nexport function addMonths(date, amount) {\n var _date = toDate(date);\n\n if (isNaN(amount)) return constructFrom(date, NaN);\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n\n var dayOfMonth = _date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n\n var endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n\n return _date;\n }\n} // Fallback for modularized imports:\n\nexport default addMonths;","import { addMonths } from \"./addMonths.mjs\";\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=> Mon Dec 01 2014 00:00:00\n */\n\nexport function addQuarters(date, amount) {\n var months = amount * 3;\n return addMonths(date, months);\n} // Fallback for modularized imports:\n\nexport default addQuarters;","import { addMonths } from \"./addMonths.mjs\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\n\nexport function addYears(date, amount) {\n return addMonths(date, amount * 12);\n} // Fallback for modularized imports:\n\nexport default addYears;","import { toDate } from \"./toDate.mjs\";\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of milliseconds\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 * const 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 function differenceInMilliseconds(dateLeft, dateRight) {\n return +toDate(dateLeft) - +toDate(dateRight);\n} // Fallback for modularized imports:\n\nexport default differenceInMilliseconds;","export function getRoundingMethod(method) {\n return function (number) {\n var round = method ? Math[method] : Math.trunc;\n var result = round(number); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n };\n}","import { getRoundingMethod } from \"./_lib/getRoundingMethod.mjs\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.mjs\";\n/**\n * The {@link differenceInSeconds} function options.\n */\n\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\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 * const 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 function differenceInSeconds(dateLeft, dateRight, options) {\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n} // Fallback for modularized imports:\n\nexport default differenceInSeconds;","import { getRoundingMethod } from \"./_lib/getRoundingMethod.mjs\";\nimport { millisecondsInMinute } from \"./constants.mjs\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.mjs\";\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\n\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n} // Fallback for modularized imports:\n\nexport default differenceInMinutes;","import { getRoundingMethod } from \"./_lib/getRoundingMethod.mjs\";\nimport { millisecondsInHour } from \"./constants.mjs\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.mjs\";\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\n\nexport function differenceInHours(dateLeft, dateRight, options) {\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n} // Fallback for modularized imports:\n\nexport default differenceInHours;","import { differenceInCalendarDays } from \"./differenceInCalendarDays.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n * //=> 92\n */\n\nexport function differenceInDays(dateLeft, dateRight) {\n var _dateLeft = toDate(dateLeft);\n\n var _dateRight = toDate(dateRight);\n\n var sign = compareLocalAsc(_dateLeft, _dateRight);\n var difference = Math.abs(differenceInCalendarDays(_dateLeft, _dateRight));\n\n _dateLeft.setDate(_dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n\n var isLastDayNotFull = Number(compareLocalAsc(_dateLeft, _dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n} // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\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} // Fallback for modularized imports:\n\n\nexport default differenceInDays;","import { getRoundingMethod } from \"./_lib/getRoundingMethod.mjs\";\nimport { differenceInDays } from \"./differenceInDays.mjs\";\n/**\n * The {@link differenceInWeeks} function options.\n */\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * @example\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\n\nexport function differenceInWeeks(dateLeft, dateRight, options) {\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n} // Fallback for modularized imports:\n\nexport default differenceInWeeks;","import { toDate } from \"./toDate.mjs\";\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const 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 function compareAsc(dateLeft, dateRight) {\n var _dateLeft = toDate(dateLeft);\n\n var _dateRight = toDate(dateRight);\n\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} // Fallback for modularized imports:\n\nexport default compareAsc;","import { toDate } from \"./toDate.mjs\";\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport function differenceInCalendarMonths(dateLeft, dateRight) {\n var _dateLeft = toDate(dateLeft);\n\n var _dateRight = toDate(dateRight);\n\n var yearDiff = _dateLeft.getFullYear() - _dateRight.getFullYear();\n\n var monthDiff = _dateLeft.getMonth() - _dateRight.getMonth();\n\n return yearDiff * 12 + monthDiff;\n} // Fallback for modularized imports:\n\nexport default differenceInCalendarMonths;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport function endOfDay(date) {\n var _date = toDate(date);\n\n _date.setHours(23, 59, 59, 999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfDay;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport function endOfMonth(date) {\n var _date = toDate(date);\n\n var month = _date.getMonth();\n\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n\n _date.setHours(23, 59, 59, 999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfMonth;","import { endOfDay } from \"./endOfDay.mjs\";\nimport { endOfMonth } from \"./endOfMonth.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport function isLastDayOfMonth(date) {\n var _date = toDate(date);\n\n return +endOfDay(_date) === +endOfMonth(_date);\n} // Fallback for modularized imports:\n\nexport default isLastDayOfMonth;","import { compareAsc } from \"./compareAsc.mjs\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.mjs\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.mjs\";\nimport { toDate } from \"./toDate.mjs\";\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 using trunc as a default rounding method.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport function differenceInMonths(dateLeft, dateRight) {\n var _dateLeft = toDate(dateLeft);\n\n var _dateRight = toDate(dateRight);\n\n var sign = compareAsc(_dateLeft, _dateRight);\n var difference = Math.abs(differenceInCalendarMonths(_dateLeft, _dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (_dateLeft.getMonth() === 1 && _dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n _dateLeft.setDate(30);\n }\n\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\n var isLastMonthNotFull = compareAsc(_dateLeft, _dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dateLeft)) && difference === 1 && compareAsc(dateLeft, _dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - Number(isLastMonthNotFull));\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n} // Fallback for modularized imports:\n\nexport default differenceInMonths;","import { getRoundingMethod } from \"./_lib/getRoundingMethod.mjs\";\nimport { differenceInMonths } from \"./differenceInMonths.mjs\";\n/**\n * The {@link differenceInQuarters} function options.\n */\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\n\nexport function differenceInQuarters(dateLeft, dateRight, options) {\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n} // Fallback for modularized imports:\n\nexport default differenceInQuarters;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\n\nexport function differenceInCalendarYears(dateLeft, dateRight) {\n var _dateLeft = toDate(dateLeft);\n\n var _dateRight = toDate(dateRight);\n\n return _dateLeft.getFullYear() - _dateRight.getFullYear();\n} // Fallback for modularized imports:\n\nexport default differenceInCalendarYears;","import { compareAsc } from \"./compareAsc.mjs\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\n\nexport function differenceInYears(dateLeft, dateRight) {\n var _dateLeft = toDate(dateLeft);\n\n var _dateRight = toDate(dateRight);\n\n var sign = compareAsc(_dateLeft, _dateRight);\n var difference = Math.abs(differenceInCalendarYears(_dateLeft, _dateRight)); // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n\n _dateLeft.setFullYear(1584);\n\n _dateRight.setFullYear(1584); // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n\n\n var isLastYearNotFull = compareAsc(_dateLeft, _dateRight) === -sign;\n var result = sign * (difference - +isLastYearNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n} // Fallback for modularized imports:\n\nexport default differenceInYears;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a second\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport function startOfSecond(date) {\n var _date = toDate(date);\n\n _date.setMilliseconds(0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfSecond;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a minute\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\nexport function startOfMinute(date) {\n var _date = toDate(date);\n\n _date.setSeconds(0, 0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfMinute;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an hour\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\n\nexport function startOfHour(date) {\n var _date = toDate(date);\n\n _date.setMinutes(0, 0, 0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfHour;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport function startOfMonth(date) {\n var _date = toDate(date);\n\n _date.setDate(1);\n\n _date.setHours(0, 0, 0, 0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfMonth;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\n\nexport function startOfQuarter(date) {\n var _date = toDate(date);\n\n var currentMonth = _date.getMonth();\n\n var month = currentMonth - currentMonth % 3;\n\n _date.setMonth(month, 1);\n\n _date.setHours(0, 0, 0, 0);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default startOfQuarter;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name endOfSecond\n * @category Second Helpers\n * @summary Return the end of a second for the given date.\n *\n * @description\n * Return the end of a second for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a second\n *\n * @example\n * // The end of a second for 1 December 2014 22:15:45.400:\n * const result = endOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.999\n */\n\nexport function endOfSecond(date) {\n var _date = toDate(date);\n\n _date.setMilliseconds(999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfSecond;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name endOfMinute\n * @category Minute Helpers\n * @summary Return the end of a minute for the given date.\n *\n * @description\n * Return the end of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a minute\n *\n * @example\n * // The end of a minute for 1 December 2014 22:15:45.400:\n * const result = endOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:59.999\n */\n\nexport function endOfMinute(date) {\n var _date = toDate(date);\n\n _date.setSeconds(59, 999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfMinute;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name endOfHour\n * @category Hour Helpers\n * @summary Return the end of an hour for the given date.\n *\n * @description\n * Return the end of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of an hour\n *\n * @example\n * // The end of an hour for 2 September 2014 11:55:00:\n * const result = endOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:59:59.999\n */\n\nexport function endOfHour(date) {\n var _date = toDate(date);\n\n _date.setMinutes(59, 59, 999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfHour;","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\n\nexport function endOfWeek(date, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = (_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0;\n\n var _date = toDate(date);\n\n var day = _date.getDay();\n\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n\n _date.setHours(23, 59, 59, 999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfWeek;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport function endOfQuarter(date) {\n var _date = toDate(date);\n\n var currentMonth = _date.getMonth();\n\n var month = currentMonth - currentMonth % 3 + 3;\n\n _date.setMonth(month, 0);\n\n _date.setHours(23, 59, 59, 999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfQuarter;","import { toDate } from \"./toDate.mjs\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\n\nexport function endOfYear(date) {\n var _date = toDate(date);\n\n var year = _date.getFullYear();\n\n _date.setFullYear(year + 1, 0, 0);\n\n _date.setHours(23, 59, 59, 999);\n\n return _date;\n} // Fallback for modularized imports:\n\nexport default endOfYear;","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * chartjs-adapter-date-fns v3.0.0\n * https://www.chartjs.org\n * (c) 2022 chartjs-adapter-date-fns Contributors\n * Released under the MIT license\n */\nimport { _adapters } from 'chart.js';\nimport { toDate, parse as _parse, parseISO, isValid, format as _format, addYears, addQuarters, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addMilliseconds, differenceInYears, differenceInQuarters, differenceInMonths, differenceInWeeks, differenceInDays, differenceInHours, differenceInMinutes, differenceInSeconds, differenceInMilliseconds, startOfYear, startOfQuarter, startOfMonth, startOfWeek, startOfDay, startOfHour, startOfMinute, startOfSecond, endOfYear, endOfQuarter, endOfMonth, endOfWeek, endOfDay, endOfHour, endOfMinute, endOfSecond } from 'date-fns';\nvar FORMATS = {\n datetime: 'MMM d, yyyy, h:mm:ss aaaa',\n millisecond: 'h:mm:ss.SSS aaaa',\n second: 'h:mm:ss aaaa',\n minute: 'h:mm aaaa',\n hour: 'ha',\n day: 'MMM d',\n week: 'PP',\n month: 'MMM yyyy',\n quarter: 'qqq - yyyy',\n year: 'yyyy'\n};\n\n_adapters._date.override({\n _id: 'date-fns',\n // DEBUG\n formats: function formats() {\n return FORMATS;\n },\n parse: function parse(value, fmt) {\n if (value === null || typeof value === 'undefined') {\n return null;\n }\n\n var type = _typeof(value);\n\n if (type === 'number' || value instanceof Date) {\n value = toDate(value);\n } else if (type === 'string') {\n if (typeof fmt === 'string') {\n value = _parse(value, fmt, new Date(), this.options);\n } else {\n value = parseISO(value, this.options);\n }\n }\n\n return isValid(value) ? value.getTime() : null;\n },\n format: function format(time, fmt) {\n return _format(time, fmt, this.options);\n },\n add: function add(time, amount, unit) {\n switch (unit) {\n case 'millisecond':\n return addMilliseconds(time, amount);\n\n case 'second':\n return addSeconds(time, amount);\n\n case 'minute':\n return addMinutes(time, amount);\n\n case 'hour':\n return addHours(time, amount);\n\n case 'day':\n return addDays(time, amount);\n\n case 'week':\n return addWeeks(time, amount);\n\n case 'month':\n return addMonths(time, amount);\n\n case 'quarter':\n return addQuarters(time, amount);\n\n case 'year':\n return addYears(time, amount);\n\n default:\n return time;\n }\n },\n diff: function diff(max, min, unit) {\n switch (unit) {\n case 'millisecond':\n return differenceInMilliseconds(max, min);\n\n case 'second':\n return differenceInSeconds(max, min);\n\n case 'minute':\n return differenceInMinutes(max, min);\n\n case 'hour':\n return differenceInHours(max, min);\n\n case 'day':\n return differenceInDays(max, min);\n\n case 'week':\n return differenceInWeeks(max, min);\n\n case 'month':\n return differenceInMonths(max, min);\n\n case 'quarter':\n return differenceInQuarters(max, min);\n\n case 'year':\n return differenceInYears(max, min);\n\n default:\n return 0;\n }\n },\n startOf: function startOf(time, unit, weekday) {\n switch (unit) {\n case 'second':\n return startOfSecond(time);\n\n case 'minute':\n return startOfMinute(time);\n\n case 'hour':\n return startOfHour(time);\n\n case 'day':\n return startOfDay(time);\n\n case 'week':\n return startOfWeek(time);\n\n case 'isoWeek':\n return startOfWeek(time, {\n weekStartsOn: +weekday\n });\n\n case 'month':\n return startOfMonth(time);\n\n case 'quarter':\n return startOfQuarter(time);\n\n case 'year':\n return startOfYear(time);\n\n default:\n return time;\n }\n },\n endOf: function endOf(time, unit) {\n switch (unit) {\n case 'second':\n return endOfSecond(time);\n\n case 'minute':\n return endOfMinute(time);\n\n case 'hour':\n return endOfHour(time);\n\n case 'day':\n return endOfDay(time);\n\n case 'week':\n return endOfWeek(time);\n\n case 'month':\n return endOfMonth(time);\n\n case 'quarter':\n return endOfQuarter(time);\n\n case 'year':\n return endOfYear(time);\n\n default:\n return time;\n }\n }\n});","import Chartkick from \"chartkick\";\nimport Chart from \"chart.js/auto\";\nimport \"chartjs-adapter-date-fns\";\nChartkick.use(Chart);","// 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\nrequire(\"@rails/ujs\").start()\n//require(\"turbolinks\").start()\nrequire(\"@rails/activestorage\").start()\nrequire(\"channels\")\nrequire(\"stylesheets/application.scss\")\nrequire(\"@hotwired/turbo-rails\")\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\n\n\nimport \"controllers\"\nimport \"../controllers\"\nimport \"chartkick/chart.js\"\n\nimport 'flag-icons/css/flag-icons.min.css'\n","var _templateObject, _templateObject2;\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\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) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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 _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError(\"attempted to use private field on non-instance\"); } return receiver; }\n\nvar id = 0;\n\nfunction _classPrivateFieldLooseKey(name) { return \"__private_\" + id++ + \"_\" + name; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { 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 = it.call(o); }, 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/*!\nTurbo 8.0.0-beta.2\nCopyright © 2023 37signals LLC\n */\n\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Javan Makhmali\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return;\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name);\n }\n})(HTMLFormElement.prototype);\n\nvar submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n var element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n var candidate = element ? element.closest(\"input, button\") : null;\n return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\n\nfunction clickCaptured(event) {\n var submitter = findSubmitterFromClickTarget(event.target);\n\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n\n(function () {\n if (\"submitter\" in Event.prototype) return;\n var prototype = window.Event.prototype; // Certain versions of Safari 15 have a bug where they won't\n // populate the submitter. This hurts TurboDrive's enable/disable detection.\n // See https://bugs.webkit.org/show_bug.cgi?id=229660\n\n if (\"SubmitEvent\" in window) {\n var prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n\n if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n prototype = prototypeOfSubmitEvent;\n } else {\n return; // polyfill not needed\n }\n }\n\n addEventListener(\"click\", clickCaptured, true);\n Object.defineProperty(prototype, \"submitter\", {\n get: function get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target);\n }\n }\n });\n})();\n\nvar FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * \n * \n * Show all expanded messages in this frame.\n * \n *\n *
\n * Show response from this form within this frame.\n *
\n *
\n */\n\nvar FrameElement = /*#__PURE__*/function (_HTMLElement) {\n _inherits(FrameElement, _HTMLElement);\n\n var _super = _createSuper(FrameElement);\n\n function FrameElement() {\n var _this;\n\n _classCallCheck(this, FrameElement);\n\n _this = _super.call(this);\n _this.loaded = Promise.resolve();\n _this.delegate = new FrameElement.delegateConstructor(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(FrameElement, [{\n key: \"connectedCallback\",\n value: function connectedCallback() {\n this.delegate.connect();\n }\n }, {\n key: \"disconnectedCallback\",\n value: function disconnectedCallback() {\n this.delegate.disconnect();\n }\n }, {\n key: \"reload\",\n value: function reload() {\n return this.delegate.sourceURLReloaded();\n }\n }, {\n key: \"attributeChangedCallback\",\n value: function attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"complete\") {\n this.delegate.completeChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else {\n this.delegate.disabledChanged();\n }\n }\n /**\n * Gets the URL to lazily load source HTML from\n */\n\n }, {\n key: \"src\",\n get: function get() {\n return this.getAttribute(\"src\");\n }\n /**\n * Sets the URL to lazily load source HTML from\n */\n ,\n set: function set(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n /**\n * Gets the refresh mode for the frame.\n */\n\n }, {\n key: \"refresh\",\n get: function get() {\n return this.getAttribute(\"refresh\");\n }\n /**\n * Sets the refresh mode for the frame.\n */\n ,\n set: function set(value) {\n if (value) {\n this.setAttribute(\"refresh\", value);\n } else {\n this.removeAttribute(\"refresh\");\n }\n }\n /**\n * Determines if the element is loading\n */\n\n }, {\n key: \"loading\",\n get: function get() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n }\n /**\n * Sets the value of if the element is loading\n */\n ,\n set: function set(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this.hasAttribute(\"disabled\");\n }\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n ,\n set: function set(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n\n }, {\n key: \"autoscroll\",\n get: function get() {\n return this.hasAttribute(\"autoscroll\");\n }\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n ,\n set: function set(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n /**\n * Determines if the element has finished loading\n */\n\n }, {\n key: \"complete\",\n get: function get() {\n return !this.delegate.isLoading;\n }\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n\n }, {\n key: \"isActive\",\n get: function get() {\n return this.ownerDocument === document && !this.isPreview;\n }\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n\n }, {\n key: \"isPreview\",\n get: function get() {\n var _this$ownerDocument, _this$ownerDocument$d;\n\n return (_this$ownerDocument = this.ownerDocument) === null || _this$ownerDocument === void 0 ? void 0 : (_this$ownerDocument$d = _this$ownerDocument.documentElement) === null || _this$ownerDocument$d === void 0 ? void 0 : _this$ownerDocument$d.hasAttribute(\"data-turbo-preview\");\n }\n }], [{\n key: \"observedAttributes\",\n get: function get() {\n return [\"disabled\", \"complete\", \"loading\", \"src\"];\n }\n }]);\n\n return FrameElement;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nFrameElement.delegateConstructor = undefined;\n\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy;\n\n default:\n return FrameLoadingStyle.eager;\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI);\n}\n\nfunction getAnchor(url) {\n var anchorMatch;\n\n if (url.hash) {\n return url.hash.slice(1); // eslint-disable-next-line no-cond-assign\n } else if (anchorMatch = url.href.match(/#(.*)$/)) {\n return anchorMatch[1];\n }\n}\n\nfunction getAction$1(form, submitter) {\n var action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n return expandURL(action);\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\n\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\n\nfunction isPrefixedBy(baseURL, url) {\n var prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\n\nfunction getRequestURL(url) {\n var anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url);\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href;\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1);\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0];\n}\n\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname);\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nvar FetchResponse = /*#__PURE__*/function () {\n function FetchResponse(response) {\n _classCallCheck(this, FetchResponse);\n\n this.response = response;\n }\n\n _createClass(FetchResponse, [{\n key: \"succeeded\",\n get: function get() {\n return this.response.ok;\n }\n }, {\n key: \"failed\",\n get: function get() {\n return !this.succeeded;\n }\n }, {\n key: \"clientError\",\n get: function get() {\n return this.statusCode >= 400 && this.statusCode <= 499;\n }\n }, {\n key: \"serverError\",\n get: function get() {\n return this.statusCode >= 500 && this.statusCode <= 599;\n }\n }, {\n key: \"redirected\",\n get: function get() {\n return this.response.redirected;\n }\n }, {\n key: \"location\",\n get: function get() {\n return expandURL(this.response.url);\n }\n }, {\n key: \"isHTML\",\n get: function get() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n }\n }, {\n key: \"statusCode\",\n get: function get() {\n return this.response.status;\n }\n }, {\n key: \"contentType\",\n get: function get() {\n return this.header(\"Content-Type\");\n }\n }, {\n key: \"responseText\",\n get: function get() {\n return this.response.clone().text();\n }\n }, {\n key: \"responseHTML\",\n get: function get() {\n if (this.isHTML) {\n return this.response.clone().text();\n } else {\n return Promise.resolve(undefined);\n }\n }\n }, {\n key: \"header\",\n value: function header(name) {\n return this.response.headers.get(name);\n }\n }]);\n\n return FetchResponse;\n}();\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element;\n } else {\n var createdScriptElement = document.createElement(\"script\");\n var cspNonce = getMetaContent(\"csp-nonce\");\n\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement;\n }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n var _iterator = _createForOfIteratorHelper(sourceElement.attributes),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ref2 = _step.value;\n var name = _ref2.name;\n var value = _ref2.value;\n destinationElement.setAttribute(name, value);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n}\n\nfunction createDocumentFragment(html) {\n var template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content;\n}\n\nfunction dispatch(eventName) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n target = _ref3.target,\n cancelable = _ref3.cancelable,\n detail = _ref3.detail;\n\n var event = new CustomEvent(eventName, {\n cancelable: cancelable,\n bubbles: true,\n composed: true,\n detail: detail\n });\n\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event;\n}\n\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick();\n } else {\n return nextAnimationFrame();\n }\n}\n\nfunction nextAnimationFrame() {\n return new Promise(function (resolve) {\n return requestAnimationFrame(function () {\n return resolve();\n });\n });\n}\n\nfunction nextEventLoopTick() {\n return new Promise(function (resolve) {\n return setTimeout(function () {\n return resolve();\n }, 0);\n });\n}\n\nfunction nextMicrotask() {\n return Promise.resolve();\n}\n\nfunction parseHTMLDocument() {\n var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return new DOMParser().parseFromString(html, \"text/html\");\n}\n\nfunction unindent(strings) {\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n values[_key - 1] = arguments[_key];\n }\n\n var lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n var match = lines[0].match(/^\\s+/);\n var indent = match ? match[0].length : 0;\n return lines.map(function (line) {\n return line.slice(indent);\n }).join(\"\\n\");\n}\n\nfunction interpolate(strings, values) {\n return strings.reduce(function (result, string, i) {\n var value = values[i] == undefined ? \"\" : values[i];\n return result + string + value;\n }, \"\");\n}\n\nfunction uuid() {\n return Array.from({\n length: 36\n }).map(function (_, i) {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\";\n } else if (i == 14) {\n return \"4\";\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16);\n } else {\n return Math.floor(Math.random() * 15).toString(16);\n }\n }).join(\"\");\n}\n\nfunction getAttribute(attributeName) {\n for (var _len2 = arguments.length, elements = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n elements[_key2 - 1] = arguments[_key2];\n }\n\n var _iterator2 = _createForOfIteratorHelper(elements.map(function (element) {\n return element === null || element === void 0 ? void 0 : element.getAttribute(attributeName);\n })),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var value = _step2.value;\n if (typeof value == \"string\") return value;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return null;\n}\n\nfunction hasAttribute(attributeName) {\n for (var _len3 = arguments.length, elements = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n elements[_key3 - 1] = arguments[_key3];\n }\n\n return elements.some(function (element) {\n return element && element.hasAttribute(attributeName);\n });\n}\n\nfunction markAsBusy() {\n for (var _len4 = arguments.length, elements = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n elements[_key4] = arguments[_key4];\n }\n\n for (var _i = 0, _elements = elements; _i < _elements.length; _i++) {\n var element = _elements[_i];\n\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\n\nfunction clearBusyState() {\n for (var _len5 = arguments.length, elements = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n elements[_key5] = arguments[_key5];\n }\n\n for (var _i2 = 0, _elements2 = elements; _i2 < _elements2.length; _i2++) {\n var element = _elements2[_i2];\n\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nfunction waitForLoad(element) {\n var timeoutInMilliseconds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2000;\n return new Promise(function (resolve) {\n var onComplete = function onComplete() {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n\n element.addEventListener(\"load\", onComplete, {\n once: true\n });\n element.addEventListener(\"error\", onComplete, {\n once: true\n });\n setTimeout(resolve, timeoutInMilliseconds);\n });\n}\n\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nfunction getVisitAction() {\n for (var _len6 = arguments.length, elements = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n elements[_key6] = arguments[_key6];\n }\n\n var action = getAttribute.apply(void 0, [\"data-turbo-action\"].concat(elements));\n return isAction(action) ? action : null;\n}\n\nfunction getMetaElement(name) {\n return document.querySelector(\"meta[name=\\\"\".concat(name, \"\\\"]\"));\n}\n\nfunction getMetaContent(name) {\n var element = getMetaElement(name);\n return element && element.content;\n}\n\nfunction setMetaContent(name, content) {\n var element = getMetaElement(name);\n\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n document.head.appendChild(element);\n }\n\n element.setAttribute(\"content\", content);\n return element;\n}\n\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n var _element$getRootNode;\n\n return element.closest(selector) || findClosestRecursively(element.assignedSlot || ((_element$getRootNode = element.getRootNode()) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.host), selector);\n }\n}\n\nfunction elementIsFocusable(element) {\n var inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\";\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable);\n}\n\nfunction around(_x, _x2) {\n return _around.apply(this, arguments);\n}\n\nfunction _around() {\n _around = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee45(callback, reader) {\n var before, after;\n return _regeneratorRuntime.wrap(function _callee45$(_context45) {\n while (1) {\n switch (_context45.prev = _context45.next) {\n case 0:\n before = reader();\n callback();\n _context45.next = 4;\n return nextAnimationFrame();\n\n case 4:\n after = reader();\n return _context45.abrupt(\"return\", [before, after]);\n\n case 6:\n case \"end\":\n return _context45.stop();\n }\n }\n }, _callee45);\n }));\n return _around.apply(this, arguments);\n}\n\nvar LimitedSet = /*#__PURE__*/function (_Set) {\n _inherits(LimitedSet, _Set);\n\n var _super2 = _createSuper(LimitedSet);\n\n function LimitedSet(maxSize) {\n var _this2;\n\n _classCallCheck(this, LimitedSet);\n\n _this2 = _super2.call(this);\n _this2.maxSize = maxSize;\n return _this2;\n }\n\n _createClass(LimitedSet, [{\n key: \"add\",\n value: function add(value) {\n if (this.size >= this.maxSize) {\n var iterator = this.values();\n var oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n\n _get(_getPrototypeOf(LimitedSet.prototype), \"add\", this).call(this, value);\n }\n }]);\n\n return LimitedSet;\n}( /*#__PURE__*/_wrapNativeSuper(Set));\n\nvar recentRequests = new LimitedSet(20);\nvar nativeFetch = window.fetch;\n\nfunction fetchWithTurboHeaders(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var modifiedHeaders = new Headers(options.headers || {});\n var requestUID = uuid();\n recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n return nativeFetch(url, _objectSpread(_objectSpread({}, options), {}, {\n headers: modifiedHeaders\n }));\n}\n\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get;\n\n case \"post\":\n return FetchMethod.post;\n\n case \"put\":\n return FetchMethod.put;\n\n case \"patch\":\n return FetchMethod.patch;\n\n case \"delete\":\n return FetchMethod.delete;\n }\n}\n\nvar FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart;\n\n case FetchEnctype.plain:\n return FetchEnctype.plain;\n\n default:\n return FetchEnctype.urlEncoded;\n }\n}\n\nvar FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\n\nvar _resolveRequestPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveRequestPromise\");\n\nvar _allowRequestToBeIntercepted = /*#__PURE__*/_classPrivateFieldLooseKey(\"allowRequestToBeIntercepted\");\n\nvar _willDelegateErrorHandling = /*#__PURE__*/_classPrivateFieldLooseKey(\"willDelegateErrorHandling\");\n\nvar FetchRequest = /*#__PURE__*/function () {\n function FetchRequest(delegate, method, location) {\n var _this$delegate$referr;\n\n var requestBody = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new URLSearchParams();\n var target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;\n var enctype = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : FetchEnctype.urlEncoded;\n\n _classCallCheck(this, FetchRequest);\n\n Object.defineProperty(this, _willDelegateErrorHandling, {\n value: _willDelegateErrorHandling2\n });\n Object.defineProperty(this, _allowRequestToBeIntercepted, {\n value: _allowRequestToBeIntercepted2\n });\n this.abortController = new AbortController();\n Object.defineProperty(this, _resolveRequestPromise, {\n writable: true,\n value: function value(_value) {}\n });\n\n var _buildResourceAndBody = buildResourceAndBody(expandURL(location), method, requestBody, enctype),\n _buildResourceAndBody2 = _slicedToArray(_buildResourceAndBody, 2),\n url = _buildResourceAndBody2[0],\n body = _buildResourceAndBody2[1];\n\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method,\n headers: _objectSpread({}, this.defaultHeaders),\n body: body,\n signal: this.abortSignal,\n referrer: (_this$delegate$referr = this.delegate.referrer) === null || _this$delegate$referr === void 0 ? void 0 : _this$delegate$referr.href\n };\n this.enctype = enctype;\n }\n\n _createClass(FetchRequest, [{\n key: \"method\",\n get: function get() {\n return this.fetchOptions.method;\n },\n set: function set(value) {\n var fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n var fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n this.url.search = \"\";\n\n var _buildResourceAndBody3 = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype),\n _buildResourceAndBody4 = _slicedToArray(_buildResourceAndBody3, 2),\n url = _buildResourceAndBody4[0],\n body = _buildResourceAndBody4[1];\n\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod;\n }\n }, {\n key: \"headers\",\n get: function get() {\n return this.fetchOptions.headers;\n },\n set: function set(value) {\n this.fetchOptions.headers = value;\n }\n }, {\n key: \"body\",\n get: function get() {\n if (this.isSafe) {\n return this.url.searchParams;\n } else {\n return this.fetchOptions.body;\n }\n },\n set: function set(value) {\n this.fetchOptions.body = value;\n }\n }, {\n key: \"location\",\n get: function get() {\n return this.url;\n }\n }, {\n key: \"params\",\n get: function get() {\n return this.url.searchParams;\n }\n }, {\n key: \"entries\",\n get: function get() {\n return this.body ? Array.from(this.body.entries()) : [];\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n this.abortController.abort();\n }\n }, {\n key: \"perform\",\n value: function () {\n var _perform = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n var fetchOptions, response;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n fetchOptions = this.fetchOptions;\n this.delegate.prepareRequest(this);\n _context.next = 4;\n return _classPrivateFieldLooseBase(this, _allowRequestToBeIntercepted)[_allowRequestToBeIntercepted](fetchOptions);\n\n case 4:\n _context.prev = 4;\n this.delegate.requestStarted(this);\n _context.next = 8;\n return fetchWithTurboHeaders(this.url.href, fetchOptions);\n\n case 8:\n response = _context.sent;\n _context.next = 11;\n return this.receive(response);\n\n case 11:\n return _context.abrupt(\"return\", _context.sent);\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context[\"catch\"](4);\n\n if (!(_context.t0.name !== \"AbortError\")) {\n _context.next = 19;\n break;\n }\n\n if (_classPrivateFieldLooseBase(this, _willDelegateErrorHandling)[_willDelegateErrorHandling](_context.t0)) {\n this.delegate.requestErrored(this, _context.t0);\n }\n\n throw _context.t0;\n\n case 19:\n _context.prev = 19;\n this.delegate.requestFinished(this);\n return _context.finish(19);\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 14, 19, 22]]);\n }));\n\n function perform() {\n return _perform.apply(this, arguments);\n }\n\n return perform;\n }()\n }, {\n key: \"receive\",\n value: function () {\n var _receive = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(response) {\n var fetchResponse, event;\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n fetchResponse = new FetchResponse(response);\n event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: {\n fetchResponse: fetchResponse\n },\n target: this.target\n });\n\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n\n return _context2.abrupt(\"return\", fetchResponse);\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function receive(_x3) {\n return _receive.apply(this, arguments);\n }\n\n return receive;\n }()\n }, {\n key: \"defaultHeaders\",\n get: function get() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n };\n }\n }, {\n key: \"isSafe\",\n get: function get() {\n return isSafe(this.method);\n }\n }, {\n key: \"abortSignal\",\n get: function get() {\n return this.abortController.signal;\n }\n }, {\n key: \"acceptResponseType\",\n value: function acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n }]);\n\n return FetchRequest;\n}();\n\nfunction _allowRequestToBeIntercepted2(_x38) {\n return _allowRequestToBeIntercepted3.apply(this, arguments);\n}\n\nfunction _allowRequestToBeIntercepted3() {\n _allowRequestToBeIntercepted3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee49(fetchOptions) {\n var _this53 = this;\n\n var requestInterception, event;\n return _regeneratorRuntime.wrap(function _callee49$(_context49) {\n while (1) {\n switch (_context49.prev = _context49.next) {\n case 0:\n requestInterception = new Promise(function (resolve) {\n return _classPrivateFieldLooseBase(_this53, _resolveRequestPromise)[_resolveRequestPromise] = resolve;\n });\n event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions: fetchOptions,\n url: this.url,\n resume: _classPrivateFieldLooseBase(this, _resolveRequestPromise)[_resolveRequestPromise]\n },\n target: this.target\n });\n this.url = event.detail.url;\n\n if (!event.defaultPrevented) {\n _context49.next = 6;\n break;\n }\n\n _context49.next = 6;\n return requestInterception;\n\n case 6:\n case \"end\":\n return _context49.stop();\n }\n }\n }, _callee49, this);\n }));\n return _allowRequestToBeIntercepted3.apply(this, arguments);\n}\n\nfunction _willDelegateErrorHandling2(error) {\n var event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: {\n request: this,\n error: error\n }\n });\n return !event.defaultPrevented;\n}\n\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get;\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n var searchParams = Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null];\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams];\n } else {\n return [resource, requestBody];\n }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n var entries = [];\n\n var _iterator3 = _createForOfIteratorHelper(requestBody),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _ref6 = _step3.value;\n\n var _ref5 = _slicedToArray(_ref6, 2);\n\n var name = _ref5[0];\n var value = _ref5[1];\n if (value instanceof File) continue;else entries.push([name, value]);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return entries;\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n var searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n url.search = searchParams.toString();\n return url;\n}\n\nvar AppearanceObserver = /*#__PURE__*/function () {\n function AppearanceObserver(delegate, element) {\n var _this3 = this;\n\n _classCallCheck(this, AppearanceObserver);\n\n this.started = false;\n\n this.intersect = function (entries) {\n var lastEntry = entries.slice(-1)[0];\n\n if (lastEntry !== null && lastEntry !== void 0 && lastEntry.isIntersecting) {\n _this3.delegate.elementAppearedInViewport(_this3.element);\n }\n };\n\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n _createClass(AppearanceObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n }]);\n\n return AppearanceObserver;\n}();\n\nvar StreamMessage = /*#__PURE__*/function () {\n function StreamMessage(fragment) {\n _classCallCheck(this, StreamMessage);\n\n this.fragment = importStreamElements(fragment);\n }\n\n _createClass(StreamMessage, null, [{\n key: \"wrap\",\n value: function wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message));\n } else {\n return message;\n }\n }\n }]);\n\n return StreamMessage;\n}();\n\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\n\nfunction importStreamElements(fragment) {\n var _iterator4 = _createForOfIteratorHelper(fragment.querySelectorAll(\"turbo-stream\")),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var element = _step4.value;\n var streamElement = document.importNode(element, true);\n\n var _iterator5 = _createForOfIteratorHelper(streamElement.templateElement.content.querySelectorAll(\"script\")),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var inertScriptElement = _step5.value;\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n element.replaceWith(streamElement);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return fragment;\n}\n\nvar FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\n\nvar FormSubmission = /*#__PURE__*/function () {\n function FormSubmission(delegate, formElement, submitter) {\n var mustRedirect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n _classCallCheck(this, FormSubmission);\n\n this.state = FormSubmissionState.initialized;\n var method = getMethod(formElement, submitter);\n var action = getAction(getFormAction(formElement, submitter), method);\n var body = buildFormData(formElement, submitter);\n var enctype = getEnctype(formElement, submitter);\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n\n _createClass(FormSubmission, [{\n key: \"method\",\n get: function get() {\n return this.fetchRequest.method;\n },\n set: function set(value) {\n this.fetchRequest.method = value;\n }\n }, {\n key: \"action\",\n get: function get() {\n return this.fetchRequest.url.toString();\n },\n set: function set(value) {\n this.fetchRequest.url = expandURL(value);\n }\n }, {\n key: \"body\",\n get: function get() {\n return this.fetchRequest.body;\n }\n }, {\n key: \"enctype\",\n get: function get() {\n return this.fetchRequest.enctype;\n }\n }, {\n key: \"isSafe\",\n get: function get() {\n return this.fetchRequest.isSafe;\n }\n }, {\n key: \"location\",\n get: function get() {\n return this.fetchRequest.url;\n } // The submission process\n\n }, {\n key: \"start\",\n value: function () {\n var _start = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {\n var initialized, requesting, confirmationMessage, answer;\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n initialized = FormSubmissionState.initialized, requesting = FormSubmissionState.requesting;\n confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n if (!(typeof confirmationMessage === \"string\")) {\n _context3.next = 8;\n break;\n }\n\n _context3.next = 5;\n return FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n\n case 5:\n answer = _context3.sent;\n\n if (answer) {\n _context3.next = 8;\n break;\n }\n\n return _context3.abrupt(\"return\");\n\n case 8:\n if (!(this.state == initialized)) {\n _context3.next = 11;\n break;\n }\n\n this.state = requesting;\n return _context3.abrupt(\"return\", this.fetchRequest.perform());\n\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function start() {\n return _start.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: \"stop\",\n value: function stop() {\n var stopping = FormSubmissionState.stopping,\n stopped = FormSubmissionState.stopped;\n\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true;\n }\n } // Fetch request delegate\n\n }, {\n key: \"prepareRequest\",\n value: function prepareRequest(request) {\n if (!request.isSafe) {\n var token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n }, {\n key: \"requestStarted\",\n value: function requestStarted(_request) {\n var _this$submitter;\n\n this.state = FormSubmissionState.waiting;\n (_this$submitter = this.submitter) === null || _this$submitter === void 0 ? void 0 : _this$submitter.setAttribute(\"disabled\", \"\");\n this.setSubmitsWith();\n markAsBusy(this.formElement);\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: {\n formSubmission: this\n }\n });\n this.delegate.formSubmissionStarted(this);\n }\n }, {\n key: \"requestPreventedHandlingResponse\",\n value: function requestPreventedHandlingResponse(request, response) {\n this.result = {\n success: response.succeeded,\n fetchResponse: response\n };\n }\n }, {\n key: \"requestSucceededWithResponse\",\n value: function requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n var error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = {\n success: true,\n fetchResponse: response\n };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n }, {\n key: \"requestFailedWithResponse\",\n value: function requestFailedWithResponse(request, response) {\n this.result = {\n success: false,\n fetchResponse: response\n };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n }, {\n key: \"requestErrored\",\n value: function requestErrored(request, error) {\n this.result = {\n success: false,\n error: error\n };\n this.delegate.formSubmissionErrored(this, error);\n }\n }, {\n key: \"requestFinished\",\n value: function requestFinished(_request) {\n var _this$submitter2;\n\n this.state = FormSubmissionState.stopped;\n (_this$submitter2 = this.submitter) === null || _this$submitter2 === void 0 ? void 0 : _this$submitter2.removeAttribute(\"disabled\");\n this.resetSubmitterText();\n clearBusyState(this.formElement);\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: _objectSpread({\n formSubmission: this\n }, this.result)\n });\n this.delegate.formSubmissionFinished(this);\n } // Private\n\n }, {\n key: \"setSubmitsWith\",\n value: function setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return;\n\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n var input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n }, {\n key: \"resetSubmitterText\",\n value: function resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return;\n\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n var input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n }, {\n key: \"requestMustRedirect\",\n value: function requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect;\n }\n }, {\n key: \"requestAcceptsTurboStreamResponse\",\n value: function requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n }\n }, {\n key: \"submitsWith\",\n get: function get() {\n var _this$submitter3;\n\n return (_this$submitter3 = this.submitter) === null || _this$submitter3 === void 0 ? void 0 : _this$submitter3.getAttribute(\"data-turbo-submits-with\");\n }\n }], [{\n key: \"confirmMethod\",\n value: function confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message));\n }\n }]);\n\n return FormSubmission;\n}();\n\nfunction buildFormData(formElement, submitter) {\n var formData = new FormData(formElement);\n var name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n var value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n\n if (name) {\n formData.append(name, value || \"\");\n }\n\n return formData;\n}\n\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n var cookies = document.cookie ? document.cookie.split(\"; \") : [];\n var cookie = cookies.find(function (cookie) {\n return cookie.startsWith(cookieName);\n });\n\n if (cookie) {\n var value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined;\n }\n }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected;\n}\n\nfunction getFormAction(formElement, submitter) {\n var formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n if (submitter !== null && submitter !== void 0 && submitter.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\";\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\";\n }\n}\n\nfunction getAction(formAction, fetchMethod) {\n var action = expandURL(formAction);\n\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n\n return action;\n}\n\nfunction getMethod(formElement, submitter) {\n var method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n}\n\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString((submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formenctype\")) || formElement.enctype);\n}\n\nvar Snapshot = /*#__PURE__*/function () {\n function Snapshot(element) {\n _classCallCheck(this, Snapshot);\n\n this.element = element;\n }\n\n _createClass(Snapshot, [{\n key: \"activeElement\",\n get: function get() {\n return this.element.ownerDocument.activeElement;\n }\n }, {\n key: \"children\",\n get: function get() {\n return _toConsumableArray(this.element.children);\n }\n }, {\n key: \"hasAnchor\",\n value: function hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null;\n }\n }, {\n key: \"getElementForAnchor\",\n value: function getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(\"[id='\".concat(anchor, \"'], a[name='\").concat(anchor, \"']\")) : null;\n }\n }, {\n key: \"isConnected\",\n get: function get() {\n return this.element.isConnected;\n }\n }, {\n key: \"firstAutofocusableElement\",\n get: function get() {\n return queryAutofocusableElement(this.element);\n }\n }, {\n key: \"permanentElements\",\n get: function get() {\n return queryPermanentElementsAll(this.element);\n }\n }, {\n key: \"getPermanentElementById\",\n value: function getPermanentElementById(id) {\n return _getPermanentElementById(this.element, id);\n }\n }, {\n key: \"getPermanentElementMapForSnapshot\",\n value: function getPermanentElementMapForSnapshot(snapshot) {\n var permanentElementMap = {};\n\n var _iterator6 = _createForOfIteratorHelper(this.permanentElements),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var currentPermanentElement = _step6.value;\n var _id = currentPermanentElement.id;\n var newPermanentElement = snapshot.getPermanentElementById(_id);\n\n if (newPermanentElement) {\n permanentElementMap[_id] = [currentPermanentElement, newPermanentElement];\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return permanentElementMap;\n }\n }]);\n\n return Snapshot;\n}();\n\nfunction _getPermanentElementById(node, id) {\n return node.querySelector(\"#\".concat(id, \"[data-turbo-permanent]\"));\n}\n\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nvar FormSubmitObserver = /*#__PURE__*/function () {\n function FormSubmitObserver(delegate, eventTarget) {\n var _this4 = this;\n\n _classCallCheck(this, FormSubmitObserver);\n\n this.started = false;\n\n this.submitCaptured = function () {\n _this4.eventTarget.removeEventListener(\"submit\", _this4.submitBubbled, false);\n\n _this4.eventTarget.addEventListener(\"submit\", _this4.submitBubbled, false);\n };\n\n this.submitBubbled = function (event) {\n if (!event.defaultPrevented) {\n var form = event.target instanceof HTMLFormElement ? event.target : undefined;\n var submitter = event.submitter || undefined;\n\n if (form && submissionDoesNotDismissDialog(form, submitter) && submissionDoesNotTargetIFrame(form, submitter) && _this4.delegate.willSubmitForm(form, submitter)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n _this4.delegate.formSubmitted(form, submitter);\n }\n }\n };\n\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n _createClass(FormSubmitObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n }]);\n\n return FormSubmitObserver;\n}();\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n var method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n return method != \"dialog\";\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n if (submitter !== null && submitter !== void 0 && submitter.hasAttribute(\"formtarget\") || form.hasAttribute(\"target\")) {\n var target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n\n var _iterator7 = _createForOfIteratorHelper(document.getElementsByName(target)),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var element = _step7.value;\n if (element instanceof HTMLIFrameElement) return false;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n return true;\n } else {\n return true;\n }\n}\n\nvar _resolveRenderPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveRenderPromise\");\n\nvar _resolveInterceptionPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveInterceptionPromise\");\n\nvar View = /*#__PURE__*/function () {\n function View(delegate, element) {\n _classCallCheck(this, View);\n\n Object.defineProperty(this, _resolveRenderPromise, {\n writable: true,\n value: function value(_value) {}\n });\n Object.defineProperty(this, _resolveInterceptionPromise, {\n writable: true,\n value: function value(_value) {}\n });\n this.delegate = delegate;\n this.element = element;\n } // Scrolling\n\n\n _createClass(View, [{\n key: \"scrollToAnchor\",\n value: function scrollToAnchor(anchor) {\n var element = this.snapshot.getElementForAnchor(anchor);\n\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n }\n }, {\n key: \"scrollToAnchorFromLocation\",\n value: function scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n }, {\n key: \"scrollToElement\",\n value: function scrollToElement(element) {\n element.scrollIntoView();\n }\n }, {\n key: \"focusElement\",\n value: function focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition(_ref7) {\n var x = _ref7.x,\n y = _ref7.y;\n this.scrollRoot.scrollTo(x, y);\n }\n }, {\n key: \"scrollToTop\",\n value: function scrollToTop() {\n this.scrollToPosition({\n x: 0,\n y: 0\n });\n }\n }, {\n key: \"scrollRoot\",\n get: function get() {\n return window;\n } // Rendering\n\n }, {\n key: \"render\",\n value: function () {\n var _render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(renderer) {\n var _this5 = this;\n\n var isPreview, shouldRender, snapshot, renderInterception, options, immediateRender;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n isPreview = renderer.isPreview, shouldRender = renderer.shouldRender, snapshot = renderer.newSnapshot;\n\n if (!shouldRender) {\n _context4.next = 25;\n break;\n }\n\n _context4.prev = 2;\n this.renderPromise = new Promise(function (resolve) {\n return _classPrivateFieldLooseBase(_this5, _resolveRenderPromise)[_resolveRenderPromise] = resolve;\n });\n this.renderer = renderer;\n _context4.next = 7;\n return this.prepareToRenderSnapshot(renderer);\n\n case 7:\n renderInterception = new Promise(function (resolve) {\n return _classPrivateFieldLooseBase(_this5, _resolveInterceptionPromise)[_resolveInterceptionPromise] = resolve;\n });\n options = {\n resume: _classPrivateFieldLooseBase(this, _resolveInterceptionPromise)[_resolveInterceptionPromise],\n render: this.renderer.renderElement\n };\n immediateRender = this.delegate.allowsImmediateRender(snapshot, isPreview, options);\n\n if (immediateRender) {\n _context4.next = 13;\n break;\n }\n\n _context4.next = 13;\n return renderInterception;\n\n case 13:\n _context4.next = 15;\n return this.renderSnapshot(renderer);\n\n case 15:\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n\n case 18:\n _context4.prev = 18;\n delete this.renderer;\n\n _classPrivateFieldLooseBase(this, _resolveRenderPromise)[_resolveRenderPromise](undefined);\n\n delete this.renderPromise;\n return _context4.finish(18);\n\n case 23:\n _context4.next = 26;\n break;\n\n case 25:\n this.invalidate(renderer.reloadReason);\n\n case 26:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this, [[2,, 18, 23]]);\n }));\n\n function render(_x4) {\n return _render.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"invalidate\",\n value: function invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n }, {\n key: \"prepareToRenderSnapshot\",\n value: function () {\n var _prepareToRenderSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(renderer) {\n return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n this.markAsPreview(renderer.isPreview);\n _context5.next = 3;\n return renderer.prepareToRender();\n\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function prepareToRenderSnapshot(_x5) {\n return _prepareToRenderSnapshot.apply(this, arguments);\n }\n\n return prepareToRenderSnapshot;\n }()\n }, {\n key: \"markAsPreview\",\n value: function markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n }, {\n key: \"markVisitDirection\",\n value: function markVisitDirection(direction) {\n this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n }\n }, {\n key: \"unmarkVisitDirection\",\n value: function unmarkVisitDirection() {\n this.element.removeAttribute(\"data-turbo-visit-direction\");\n }\n }, {\n key: \"renderSnapshot\",\n value: function () {\n var _renderSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(renderer) {\n return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return renderer.render();\n\n case 2:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n function renderSnapshot(_x6) {\n return _renderSnapshot.apply(this, arguments);\n }\n\n return renderSnapshot;\n }()\n }, {\n key: \"finishRenderingSnapshot\",\n value: function finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n }]);\n\n return View;\n}();\n\nvar FrameView = /*#__PURE__*/function (_View) {\n _inherits(FrameView, _View);\n\n var _super3 = _createSuper(FrameView);\n\n function FrameView() {\n _classCallCheck(this, FrameView);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(FrameView, [{\n key: \"missing\",\n value: function missing() {\n this.element.innerHTML = \"Content missing\";\n }\n }, {\n key: \"snapshot\",\n get: function get() {\n return new Snapshot(this.element);\n }\n }]);\n\n return FrameView;\n}(View);\n\nvar LinkInterceptor = /*#__PURE__*/function () {\n function LinkInterceptor(delegate, element) {\n var _this6 = this;\n\n _classCallCheck(this, LinkInterceptor);\n\n this.clickBubbled = function (event) {\n if (_this6.respondsToEventTarget(event.target)) {\n _this6.clickEvent = event;\n } else {\n delete _this6.clickEvent;\n }\n };\n\n this.linkClicked = function (event) {\n if (_this6.clickEvent && _this6.respondsToEventTarget(event.target) && event.target instanceof Element) {\n if (_this6.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n _this6.clickEvent.preventDefault();\n\n event.preventDefault();\n\n _this6.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n\n delete _this6.clickEvent;\n };\n\n this.willVisit = function (_event) {\n delete _this6.clickEvent;\n };\n\n this.delegate = delegate;\n this.element = element;\n }\n\n _createClass(LinkInterceptor, [{\n key: \"start\",\n value: function start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n }, {\n key: \"respondsToEventTarget\",\n value: function respondsToEventTarget(target) {\n var element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n return element && element.closest(\"turbo-frame, html\") == this.element;\n }\n }]);\n\n return LinkInterceptor;\n}();\n\nvar LinkClickObserver = /*#__PURE__*/function () {\n function LinkClickObserver(delegate, eventTarget) {\n var _this7 = this;\n\n _classCallCheck(this, LinkClickObserver);\n\n this.started = false;\n\n this.clickCaptured = function () {\n _this7.eventTarget.removeEventListener(\"click\", _this7.clickBubbled, false);\n\n _this7.eventTarget.addEventListener(\"click\", _this7.clickBubbled, false);\n };\n\n this.clickBubbled = function (event) {\n if (event instanceof MouseEvent && _this7.clickEventIsSignificant(event)) {\n var target = event.composedPath && event.composedPath()[0] || event.target;\n\n var link = _this7.findLinkFromClickTarget(target);\n\n if (link && doesNotTargetIFrame(link)) {\n var _location2 = _this7.getLocationForLink(link);\n\n if (_this7.delegate.willFollowLinkToLocation(link, _location2, event)) {\n event.preventDefault();\n\n _this7.delegate.followedLinkToLocation(link, _location2);\n }\n }\n }\n };\n\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n _createClass(LinkClickObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n }, {\n key: \"clickEventIsSignificant\",\n value: function clickEventIsSignificant(event) {\n return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n }\n }, {\n key: \"findLinkFromClickTarget\",\n value: function findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n }\n }, {\n key: \"getLocationForLink\",\n value: function getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\");\n }\n }]);\n\n return LinkClickObserver;\n}();\n\nfunction doesNotTargetIFrame(anchor) {\n if (anchor.hasAttribute(\"target\")) {\n var _iterator8 = _createForOfIteratorHelper(document.getElementsByName(anchor.target)),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var element = _step8.value;\n if (element instanceof HTMLIFrameElement) return false;\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n return true;\n } else {\n return true;\n }\n}\n\nvar FormLinkClickObserver = /*#__PURE__*/function () {\n function FormLinkClickObserver(delegate, element) {\n _classCallCheck(this, FormLinkClickObserver);\n\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n\n _createClass(FormLinkClickObserver, [{\n key: \"start\",\n value: function start() {\n this.linkInterceptor.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.linkInterceptor.stop();\n } // Link click observer delegate\n\n }, {\n key: \"willFollowLinkToLocation\",\n value: function willFollowLinkToLocation(link, location, originalEvent) {\n return this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) && (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"));\n }\n }, {\n key: \"followedLinkToLocation\",\n value: function followedLinkToLocation(link, location) {\n var form = document.createElement(\"form\");\n var type = \"hidden\";\n\n var _iterator9 = _createForOfIteratorHelper(location.searchParams),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var _ref10 = _step9.value;\n\n var _ref9 = _slicedToArray(_ref10, 2);\n\n var name = _ref9[0];\n var value = _ref9[1];\n form.append(Object.assign(document.createElement(\"input\"), {\n type: type,\n name: name,\n value: value\n }));\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n var action = Object.assign(location, {\n search: \"\"\n });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n var method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n var turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n var turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n var turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n var turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n this.delegate.submittedFormLinkToLocation(link, location, form);\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", function () {\n return form.remove();\n }, {\n once: true\n });\n requestAnimationFrame(function () {\n return form.requestSubmit();\n });\n }\n }]);\n\n return FormLinkClickObserver;\n}();\n\nvar Bardo = /*#__PURE__*/function () {\n function Bardo(delegate, permanentElementMap) {\n _classCallCheck(this, Bardo);\n\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n\n _createClass(Bardo, [{\n key: \"enter\",\n value: function enter() {\n for (var _id2 in this.permanentElementMap) {\n var _this$permanentElemen = _slicedToArray(this.permanentElementMap[_id2], 2),\n currentPermanentElement = _this$permanentElemen[0],\n newPermanentElement = _this$permanentElemen[1];\n\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n }, {\n key: \"leave\",\n value: function leave() {\n for (var _id3 in this.permanentElementMap) {\n var _this$permanentElemen2 = _slicedToArray(this.permanentElementMap[_id3], 1),\n currentPermanentElement = _this$permanentElemen2[0];\n\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n }, {\n key: \"replaceNewPermanentElementWithPlaceholder\",\n value: function replaceNewPermanentElementWithPlaceholder(permanentElement) {\n var placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n }, {\n key: \"replaceCurrentPermanentElementWithClone\",\n value: function replaceCurrentPermanentElementWithClone(permanentElement) {\n var clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n }, {\n key: \"replacePlaceholderWithPermanentElement\",\n value: function replacePlaceholderWithPermanentElement(permanentElement) {\n var placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n }\n }, {\n key: \"getPlaceholderById\",\n value: function getPlaceholderById(id) {\n return this.placeholders.find(function (element) {\n return element.content == id;\n });\n }\n }, {\n key: \"placeholders\",\n get: function get() {\n return _toConsumableArray(document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\"));\n }\n }], [{\n key: \"preservingPermanentElements\",\n value: function () {\n var _preservingPermanentElements = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(delegate, permanentElementMap, callback) {\n var bardo;\n return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n _context7.next = 4;\n return callback();\n\n case 4:\n bardo.leave();\n\n case 5:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function preservingPermanentElements(_x7, _x8, _x9) {\n return _preservingPermanentElements.apply(this, arguments);\n }\n\n return preservingPermanentElements;\n }()\n }]);\n\n return Bardo;\n}();\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n var element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element;\n}\n\nvar _activeElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"activeElement\");\n\nvar Renderer = /*#__PURE__*/function () {\n function Renderer(currentSnapshot, newSnapshot, renderElement, isPreview) {\n var _this8 = this;\n\n var willRender = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\n _classCallCheck(this, Renderer);\n\n Object.defineProperty(this, _activeElement, {\n writable: true,\n value: null\n });\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise(function (resolve, reject) {\n return _this8.resolvingFunctions = {\n resolve: resolve,\n reject: reject\n };\n });\n }\n\n _createClass(Renderer, [{\n key: \"shouldRender\",\n get: function get() {\n return true;\n }\n }, {\n key: \"reloadReason\",\n get: function get() {\n return;\n }\n }, {\n key: \"prepareToRender\",\n value: function prepareToRender() {\n return;\n }\n }, {\n key: \"render\",\n value: function render() {// Abstract method\n }\n }, {\n key: \"finishRendering\",\n value: function finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n }, {\n key: \"preservingPermanentElements\",\n value: function () {\n var _preservingPermanentElements2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8(callback) {\n return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n\n case 2:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function preservingPermanentElements(_x10) {\n return _preservingPermanentElements2.apply(this, arguments);\n }\n\n return preservingPermanentElements;\n }()\n }, {\n key: \"focusFirstAutofocusableElement\",\n value: function focusFirstAutofocusableElement() {\n var element = this.connectedSnapshot.firstAutofocusableElement;\n\n if (element) {\n element.focus();\n }\n } // Bardo delegate\n\n }, {\n key: \"enteringBardo\",\n value: function enteringBardo(currentPermanentElement) {\n if (_classPrivateFieldLooseBase(this, _activeElement)[_activeElement]) return;\n\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n _classPrivateFieldLooseBase(this, _activeElement)[_activeElement] = this.currentSnapshot.activeElement;\n }\n }\n }, {\n key: \"leavingBardo\",\n value: function leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(_classPrivateFieldLooseBase(this, _activeElement)[_activeElement]) && _classPrivateFieldLooseBase(this, _activeElement)[_activeElement] instanceof HTMLElement) {\n _classPrivateFieldLooseBase(this, _activeElement)[_activeElement].focus();\n\n _classPrivateFieldLooseBase(this, _activeElement)[_activeElement] = null;\n }\n }\n }, {\n key: \"connectedSnapshot\",\n get: function get() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n }\n }, {\n key: \"currentElement\",\n get: function get() {\n return this.currentSnapshot.element;\n }\n }, {\n key: \"newElement\",\n get: function get() {\n return this.newSnapshot.element;\n }\n }, {\n key: \"permanentElementMap\",\n get: function get() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n }\n }, {\n key: \"renderMethod\",\n get: function get() {\n return \"replace\";\n }\n }]);\n\n return Renderer;\n}();\n\nvar FrameRenderer = /*#__PURE__*/function (_Renderer) {\n _inherits(FrameRenderer, _Renderer);\n\n var _super4 = _createSuper(FrameRenderer);\n\n function FrameRenderer(delegate, currentSnapshot, newSnapshot, renderElement, isPreview) {\n var _this9;\n\n var willRender = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n\n _classCallCheck(this, FrameRenderer);\n\n _this9 = _super4.call(this, currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n _this9.delegate = delegate;\n return _this9;\n }\n\n _createClass(FrameRenderer, [{\n key: \"shouldRender\",\n get: function get() {\n return true;\n }\n }, {\n key: \"render\",\n value: function () {\n var _render2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9() {\n var _this10 = this;\n\n return _regeneratorRuntime.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return nextRepaint();\n\n case 2:\n this.preservingPermanentElements(function () {\n _this10.loadFrameElement();\n });\n this.scrollFrameIntoView();\n _context9.next = 6;\n return nextRepaint();\n\n case 6:\n this.focusFirstAutofocusableElement();\n _context9.next = 9;\n return nextRepaint();\n\n case 9:\n this.activateScriptElements();\n\n case 10:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function render() {\n return _render2.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"loadFrameElement\",\n value: function loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n }, {\n key: \"scrollFrameIntoView\",\n value: function scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n var element = this.currentElement.firstElementChild;\n var block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n var behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n if (element) {\n element.scrollIntoView({\n block: block,\n behavior: behavior\n });\n return true;\n }\n }\n\n return false;\n }\n }, {\n key: \"activateScriptElements\",\n value: function activateScriptElements() {\n var _iterator10 = _createForOfIteratorHelper(this.newScriptElements),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var inertScriptElement = _step10.value;\n var activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n }, {\n key: \"newScriptElements\",\n get: function get() {\n return this.currentElement.querySelectorAll(\"script\");\n }\n }], [{\n key: \"renderElement\",\n value: function renderElement(currentElement, newElement) {\n var _frameElement$ownerDo;\n\n var destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n var frameElement = newElement;\n var sourceRange = (_frameElement$ownerDo = frameElement.ownerDocument) === null || _frameElement$ownerDo === void 0 ? void 0 : _frameElement$ownerDo.createRange();\n\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n }]);\n\n return FrameRenderer;\n}(Renderer);\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value;\n } else {\n return defaultValue;\n }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value;\n } else {\n return defaultValue;\n }\n}\n\nvar ProgressBar = /*#__PURE__*/function () {\n function ProgressBar() {\n var _this11 = this;\n\n _classCallCheck(this, ProgressBar);\n\n this.hiding = false;\n this.value = 0;\n this.visible = false;\n\n this.trickle = function () {\n _this11.setValue(_this11.value + Math.random() / 100);\n };\n\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n\n _createClass(ProgressBar, [{\n key: \"show\",\n value: function show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n }, {\n key: \"hide\",\n value: function hide() {\n var _this12 = this;\n\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(function () {\n _this12.uninstallProgressElement();\n\n _this12.stopTrickling();\n\n _this12.visible = false;\n _this12.hiding = false;\n });\n }\n }\n }, {\n key: \"setValue\",\n value: function setValue(value) {\n this.value = value;\n this.refresh();\n } // Private\n\n }, {\n key: \"installStylesheetElement\",\n value: function installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n }, {\n key: \"installProgressElement\",\n value: function installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n }, {\n key: \"fadeProgressElement\",\n value: function fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n }, {\n key: \"uninstallProgressElement\",\n value: function uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n }, {\n key: \"startTrickling\",\n value: function startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n }, {\n key: \"stopTrickling\",\n value: function stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n var _this13 = this;\n\n requestAnimationFrame(function () {\n _this13.progressElement.style.width = \"\".concat(10 + _this13.value * 90, \"%\");\n });\n }\n }, {\n key: \"createStylesheetElement\",\n value: function createStylesheetElement() {\n var element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n\n return element;\n }\n }, {\n key: \"createProgressElement\",\n value: function createProgressElement() {\n var element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element;\n }\n }, {\n key: \"cspNonce\",\n get: function get() {\n return getMetaContent(\"csp-nonce\");\n }\n }], [{\n key: \"defaultCSS\",\n get:\n /*ms*/\n function get() {\n return unindent(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n .turbo-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 2147483647;\\n transition:\\n width \", \"ms ease-out,\\n opacity \", \"ms \", \"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n }\\n \"])), ProgressBar.animationDuration, ProgressBar.animationDuration / 2, ProgressBar.animationDuration / 2);\n }\n }]);\n\n return ProgressBar;\n}();\n\nProgressBar.animationDuration = 300;\n\nvar HeadSnapshot = /*#__PURE__*/function (_Snapshot) {\n _inherits(HeadSnapshot, _Snapshot);\n\n var _super5 = _createSuper(HeadSnapshot);\n\n function HeadSnapshot() {\n var _this14;\n\n _classCallCheck(this, HeadSnapshot);\n\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n _this14 = _super5.call.apply(_super5, [this].concat(args));\n _this14.detailsByOuterHTML = _this14.children.filter(function (element) {\n return !elementIsNoscript(element);\n }).map(function (element) {\n return elementWithoutNonce(element);\n }).reduce(function (result, element) {\n var outerHTML = element.outerHTML;\n var details = outerHTML in result ? result[outerHTML] : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, outerHTML, _objectSpread(_objectSpread({}, details), {}, {\n elements: [].concat(_toConsumableArray(details.elements), [element])\n })));\n }, {});\n return _this14;\n }\n\n _createClass(HeadSnapshot, [{\n key: \"trackedElementSignature\",\n get: function get() {\n var _this15 = this;\n\n return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {\n return _this15.detailsByOuterHTML[outerHTML].tracked;\n }).join(\"\");\n }\n }, {\n key: \"getScriptElementsNotInSnapshot\",\n value: function getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n }\n }, {\n key: \"getStylesheetElementsNotInSnapshot\",\n value: function getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n }\n }, {\n key: \"getElementsMatchingTypeNotInSnapshot\",\n value: function getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n var _this16 = this;\n\n return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {\n return !(outerHTML in snapshot.detailsByOuterHTML);\n }).map(function (outerHTML) {\n return _this16.detailsByOuterHTML[outerHTML];\n }).filter(function (_ref11) {\n var type = _ref11.type;\n return type == matchedType;\n }).map(function (_ref12) {\n var _ref12$elements = _slicedToArray(_ref12.elements, 1),\n element = _ref12$elements[0];\n\n return element;\n });\n }\n }, {\n key: \"provisionalElements\",\n get: function get() {\n var _this17 = this;\n\n return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {\n var _this17$detailsByOute = _this17.detailsByOuterHTML[outerHTML],\n type = _this17$detailsByOute.type,\n tracked = _this17$detailsByOute.tracked,\n elements = _this17$detailsByOute.elements;\n\n if (type == null && !tracked) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(elements));\n } else if (elements.length > 1) {\n return [].concat(_toConsumableArray(result), _toConsumableArray(elements.slice(1)));\n } else {\n return result;\n }\n }, []);\n }\n }, {\n key: \"getMetaValue\",\n value: function getMetaValue(name) {\n var element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null;\n }\n }, {\n key: \"findMetaElementByName\",\n value: function findMetaElementByName(name) {\n var _this18 = this;\n\n return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {\n var _this18$detailsByOute = _slicedToArray(_this18.detailsByOuterHTML[outerHTML].elements, 1),\n element = _this18$detailsByOute[0];\n\n return elementIsMetaElementWithName(element, name) ? element : result;\n }, undefined | undefined);\n }\n }]);\n\n return HeadSnapshot;\n}(Snapshot);\n\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\";\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\";\n }\n}\n\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\n\nfunction elementIsScript(element) {\n var tagName = element.localName;\n return tagName == \"script\";\n}\n\nfunction elementIsNoscript(element) {\n var tagName = element.localName;\n return tagName == \"noscript\";\n}\n\nfunction elementIsStylesheet(element) {\n var tagName = element.localName;\n return tagName == \"style\" || tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\";\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n var tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\n\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n\n return element;\n}\n\nvar PageSnapshot = /*#__PURE__*/function (_Snapshot2) {\n _inherits(PageSnapshot, _Snapshot2);\n\n var _super6 = _createSuper(PageSnapshot);\n\n function PageSnapshot(documentElement, body, headSnapshot) {\n var _this19;\n\n _classCallCheck(this, PageSnapshot);\n\n _this19 = _super6.call(this, body);\n _this19.documentElement = documentElement;\n _this19.headSnapshot = headSnapshot;\n return _this19;\n }\n\n _createClass(PageSnapshot, [{\n key: \"clone\",\n value: function clone() {\n var clonedElement = this.element.cloneNode(true);\n var selectElements = this.element.querySelectorAll(\"select\");\n var clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n var _iterator11 = _createForOfIteratorHelper(selectElements.entries()),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var _ref15 = _step11.value;\n\n var _ref14 = _slicedToArray(_ref15, 2);\n\n var index = _ref14[0];\n var source = _ref14[1];\n var clone = clonedSelectElements[index];\n\n var _iterator13 = _createForOfIteratorHelper(clone.selectedOptions),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var option = _step13.value;\n option.selected = false;\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n\n var _iterator14 = _createForOfIteratorHelper(source.selectedOptions),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var _option = _step14.value;\n clone.options[_option.index].selected = true;\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n var _iterator12 = _createForOfIteratorHelper(clonedElement.querySelectorAll('input[type=\"password\"]')),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var clonedPasswordInput = _step12.value;\n clonedPasswordInput.value = \"\";\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot);\n }\n }, {\n key: \"lang\",\n get: function get() {\n return this.documentElement.getAttribute(\"lang\");\n }\n }, {\n key: \"headElement\",\n get: function get() {\n return this.headSnapshot.element;\n }\n }, {\n key: \"rootLocation\",\n get: function get() {\n var _this$getSetting;\n\n var root = (_this$getSetting = this.getSetting(\"root\")) !== null && _this$getSetting !== void 0 ? _this$getSetting : \"/\";\n return expandURL(root);\n }\n }, {\n key: \"cacheControlValue\",\n get: function get() {\n return this.getSetting(\"cache-control\");\n }\n }, {\n key: \"isPreviewable\",\n get: function get() {\n return this.cacheControlValue != \"no-preview\";\n }\n }, {\n key: \"isCacheable\",\n get: function get() {\n return this.cacheControlValue != \"no-cache\";\n }\n }, {\n key: \"isVisitable\",\n get: function get() {\n return this.getSetting(\"visit-control\") != \"reload\";\n }\n }, {\n key: \"prefersViewTransitions\",\n get: function get() {\n return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\";\n }\n }, {\n key: \"shouldMorphPage\",\n get: function get() {\n return this.getSetting(\"refresh-method\") === \"morph\";\n }\n }, {\n key: \"shouldPreserveScrollPosition\",\n get: function get() {\n return this.getSetting(\"refresh-scroll\") === \"preserve\";\n } // Private\n\n }, {\n key: \"getSetting\",\n value: function getSetting(name) {\n return this.headSnapshot.getMetaValue(\"turbo-\".concat(name));\n }\n }], [{\n key: \"fromHTMLString\",\n value: function fromHTMLString() {\n var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n return this.fromDocument(parseHTMLDocument(html));\n }\n }, {\n key: \"fromElement\",\n value: function fromElement(element) {\n return this.fromDocument(element.ownerDocument);\n }\n }, {\n key: \"fromDocument\",\n value: function fromDocument(_ref16) {\n var documentElement = _ref16.documentElement,\n body = _ref16.body,\n head = _ref16.head;\n return new this(documentElement, body, new HeadSnapshot(head));\n }\n }]);\n\n return PageSnapshot;\n}(Snapshot);\n\nvar _viewTransitionStarted = /*#__PURE__*/_classPrivateFieldLooseKey(\"viewTransitionStarted\");\n\nvar _lastOperation = /*#__PURE__*/_classPrivateFieldLooseKey(\"lastOperation\");\n\nvar ViewTransitioner = /*#__PURE__*/function () {\n function ViewTransitioner() {\n _classCallCheck(this, ViewTransitioner);\n\n Object.defineProperty(this, _viewTransitionStarted, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _lastOperation, {\n writable: true,\n value: Promise.resolve()\n });\n }\n\n _createClass(ViewTransitioner, [{\n key: \"renderChange\",\n value: function renderChange(useViewTransition, render) {\n if (useViewTransition && this.viewTransitionsAvailable && !_classPrivateFieldLooseBase(this, _viewTransitionStarted)[_viewTransitionStarted]) {\n _classPrivateFieldLooseBase(this, _viewTransitionStarted)[_viewTransitionStarted] = true;\n _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation] = _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation].then( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {\n return _regeneratorRuntime.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return document.startViewTransition(render).finished;\n\n case 2:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n })));\n } else {\n _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation] = _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation].then(render);\n }\n\n return _classPrivateFieldLooseBase(this, _lastOperation)[_lastOperation];\n }\n }, {\n key: \"viewTransitionsAvailable\",\n get: function get() {\n return document.startViewTransition;\n }\n }]);\n\n return ViewTransitioner;\n}();\n\nvar defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: function visitCachedSnapshot() {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\nvar TimingMetric = {\n visitStart: \"visitStart\",\n requestStart: \"requestStart\",\n requestEnd: \"requestEnd\",\n visitEnd: \"visitEnd\"\n};\nvar VisitState = {\n initialized: \"initialized\",\n started: \"started\",\n canceled: \"canceled\",\n failed: \"failed\",\n completed: \"completed\"\n};\nvar SystemStatusCode = {\n networkFailure: 0,\n timeoutFailure: -1,\n contentTypeMismatch: -2\n};\nvar Direction = {\n advance: \"forward\",\n restore: \"back\",\n replace: \"none\"\n};\n\nvar Visit = /*#__PURE__*/function () {\n // Required by turbo-ios\n function Visit(delegate, location, restorationIdentifier) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Visit);\n\n this.identifier = uuid();\n this.timingMetrics = {};\n this.followedRedirect = false;\n this.historyChanged = false;\n this.scrolled = false;\n this.shouldCacheSnapshot = true;\n this.acceptsStreamResponse = false;\n this.snapshotCached = false;\n this.state = VisitState.initialized;\n this.viewTransitioner = new ViewTransitioner();\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n\n var _defaultOptions$optio = _objectSpread(_objectSpread({}, defaultOptions), options),\n action = _defaultOptions$optio.action,\n historyChanged = _defaultOptions$optio.historyChanged,\n referrer = _defaultOptions$optio.referrer,\n snapshot = _defaultOptions$optio.snapshot,\n snapshotHTML = _defaultOptions$optio.snapshotHTML,\n response = _defaultOptions$optio.response,\n visitCachedSnapshot = _defaultOptions$optio.visitCachedSnapshot,\n willRender = _defaultOptions$optio.willRender,\n updateHistory = _defaultOptions$optio.updateHistory,\n shouldCacheSnapshot = _defaultOptions$optio.shouldCacheSnapshot,\n acceptsStreamResponse = _defaultOptions$optio.acceptsStreamResponse,\n direction = _defaultOptions$optio.direction;\n\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n this.direction = direction || Direction[action];\n }\n\n _createClass(Visit, [{\n key: \"adapter\",\n get: function get() {\n return this.delegate.adapter;\n }\n }, {\n key: \"view\",\n get: function get() {\n return this.delegate.view;\n }\n }, {\n key: \"history\",\n get: function get() {\n return this.delegate.history;\n }\n }, {\n key: \"restorationData\",\n get: function get() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n }\n }, {\n key: \"silent\",\n get: function get() {\n return this.isSamePage;\n }\n }, {\n key: \"start\",\n value: function start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n }, {\n key: \"cancel\",\n value: function cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n }, {\n key: \"complete\",\n value: function complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.state = VisitState.completed;\n this.followRedirect();\n\n if (!this.followedRedirect) {\n this.adapter.visitCompleted(this);\n this.delegate.visitCompleted(this);\n }\n }\n }\n }, {\n key: \"fail\",\n value: function fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n this.delegate.visitCompleted(this);\n }\n }\n }, {\n key: \"changeHistory\",\n value: function changeHistory() {\n if (!this.historyChanged && this.updateHistory) {\n var _this$referrer;\n\n var actionForHistory = this.location.href === ((_this$referrer = this.referrer) === null || _this$referrer === void 0 ? void 0 : _this$referrer.href) ? \"replace\" : this.action;\n var method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n }, {\n key: \"issueRequest\",\n value: function issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n }, {\n key: \"simulateRequest\",\n value: function simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n }, {\n key: \"startRequest\",\n value: function startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n }, {\n key: \"recordResponse\",\n value: function recordResponse() {\n var response = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.response;\n this.response = response;\n\n if (response) {\n var statusCode = response.statusCode;\n\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n }, {\n key: \"finishRequest\",\n value: function finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n }, {\n key: \"loadResponse\",\n value: function loadResponse() {\n var _this20 = this;\n\n if (this.response) {\n var _this$response = this.response,\n statusCode = _this$response.statusCode,\n responseHTML = _this$response.responseHTML;\n this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {\n var snapshot;\n return _regeneratorRuntime.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (_this20.shouldCacheSnapshot) _this20.cacheSnapshot();\n\n if (!_this20.view.renderPromise) {\n _context11.next = 4;\n break;\n }\n\n _context11.next = 4;\n return _this20.view.renderPromise;\n\n case 4:\n if (!(isSuccessful(statusCode) && responseHTML != null)) {\n _context11.next = 12;\n break;\n }\n\n snapshot = PageSnapshot.fromHTMLString(responseHTML);\n _context11.next = 8;\n return _this20.renderPageSnapshot(snapshot, false);\n\n case 8:\n _this20.adapter.visitRendered(_this20);\n\n _this20.complete();\n\n _context11.next = 16;\n break;\n\n case 12:\n _context11.next = 14;\n return _this20.view.renderError(PageSnapshot.fromHTMLString(responseHTML), _this20);\n\n case 14:\n _this20.adapter.visitRendered(_this20);\n\n _this20.fail();\n\n case 16:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11);\n })));\n }\n }\n }, {\n key: \"getCachedSnapshot\",\n value: function getCachedSnapshot() {\n var snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot;\n }\n }\n }\n }, {\n key: \"getPreloadedSnapshot\",\n value: function getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML);\n }\n }\n }, {\n key: \"hasCachedSnapshot\",\n value: function hasCachedSnapshot() {\n return this.getCachedSnapshot() != null;\n }\n }, {\n key: \"loadCachedSnapshot\",\n value: function loadCachedSnapshot() {\n var _this21 = this;\n\n var snapshot = this.getCachedSnapshot();\n\n if (snapshot) {\n var isPreview = this.shouldIssueRequest();\n this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12() {\n return _regeneratorRuntime.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _this21.cacheSnapshot();\n\n if (!_this21.isSamePage) {\n _context12.next = 5;\n break;\n }\n\n _this21.adapter.visitRendered(_this21);\n\n _context12.next = 12;\n break;\n\n case 5:\n if (!_this21.view.renderPromise) {\n _context12.next = 8;\n break;\n }\n\n _context12.next = 8;\n return _this21.view.renderPromise;\n\n case 8:\n _context12.next = 10;\n return _this21.renderPageSnapshot(snapshot, isPreview);\n\n case 10:\n _this21.adapter.visitRendered(_this21);\n\n if (!isPreview) {\n _this21.complete();\n }\n\n case 12:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12);\n })));\n }\n }\n }, {\n key: \"followRedirect\",\n value: function followRedirect() {\n var _this$response2;\n\n if (this.redirectedToLocation && !this.followedRedirect && (_this$response2 = this.response) !== null && _this$response2 !== void 0 && _this$response2.redirected) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false\n });\n this.followedRedirect = true;\n }\n }\n }, {\n key: \"goToSamePageAnchor\",\n value: function goToSamePageAnchor() {\n var _this22 = this;\n\n if (this.isSamePage) {\n this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13() {\n return _regeneratorRuntime.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _this22.cacheSnapshot();\n\n _this22.performScroll();\n\n _this22.changeHistory();\n\n _this22.adapter.visitRendered(_this22);\n\n case 4:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13);\n })));\n }\n } // Fetch request delegate\n\n }, {\n key: \"prepareRequest\",\n value: function prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n }, {\n key: \"requestStarted\",\n value: function requestStarted() {\n this.startRequest();\n }\n }, {\n key: \"requestPreventedHandlingResponse\",\n value: function requestPreventedHandlingResponse(_request, _response) {}\n }, {\n key: \"requestSucceededWithResponse\",\n value: function () {\n var _requestSucceededWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14(request, response) {\n var responseHTML, redirected, statusCode;\n return _regeneratorRuntime.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return response.responseHTML;\n\n case 2:\n responseHTML = _context14.sent;\n redirected = response.redirected, statusCode = response.statusCode;\n\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected: redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({\n statusCode: statusCode,\n responseHTML: responseHTML,\n redirected: redirected\n });\n }\n\n case 5:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function requestSucceededWithResponse(_x11, _x12) {\n return _requestSucceededWithResponse.apply(this, arguments);\n }\n\n return requestSucceededWithResponse;\n }()\n }, {\n key: \"requestFailedWithResponse\",\n value: function () {\n var _requestFailedWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee15(request, response) {\n var responseHTML, redirected, statusCode;\n return _regeneratorRuntime.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return response.responseHTML;\n\n case 2:\n responseHTML = _context15.sent;\n redirected = response.redirected, statusCode = response.statusCode;\n\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected: redirected\n });\n } else {\n this.recordResponse({\n statusCode: statusCode,\n responseHTML: responseHTML,\n redirected: redirected\n });\n }\n\n case 5:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function requestFailedWithResponse(_x13, _x14) {\n return _requestFailedWithResponse.apply(this, arguments);\n }\n\n return requestFailedWithResponse;\n }()\n }, {\n key: \"requestErrored\",\n value: function requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n }, {\n key: \"requestFinished\",\n value: function requestFinished() {\n this.finishRequest();\n } // Scrolling\n\n }, {\n key: \"performScroll\",\n value: function performScroll() {\n if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n\n this.scrolled = true;\n }\n }\n }, {\n key: \"scrollToRestoredPosition\",\n value: function scrollToRestoredPosition() {\n var scrollPosition = this.restorationData.scrollPosition;\n\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true;\n }\n }\n }, {\n key: \"scrollToAnchor\",\n value: function scrollToAnchor() {\n var anchor = getAnchor(this.location);\n\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true;\n }\n } // Instrumentation\n\n }, {\n key: \"recordTimingMetric\",\n value: function recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n }, {\n key: \"getTimingMetrics\",\n value: function getTimingMetrics() {\n return _objectSpread({}, this.timingMetrics);\n } // Private\n\n }, {\n key: \"getHistoryMethodForAction\",\n value: function getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState;\n\n case \"advance\":\n case \"restore\":\n return history.pushState;\n }\n }\n }, {\n key: \"hasPreloadedResponse\",\n value: function hasPreloadedResponse() {\n return _typeof(this.response) == \"object\";\n }\n }, {\n key: \"shouldIssueRequest\",\n value: function shouldIssueRequest() {\n if (this.isSamePage) {\n return false;\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot();\n } else {\n return this.willRender;\n }\n }\n }, {\n key: \"cacheSnapshot\",\n value: function cacheSnapshot() {\n var _this23 = this;\n\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then(function (snapshot) {\n return snapshot && _this23.visitCachedSnapshot(snapshot);\n });\n this.snapshotCached = true;\n }\n }\n }, {\n key: \"render\",\n value: function () {\n var _render3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee16(callback) {\n return _regeneratorRuntime.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n this.cancelRender();\n _context16.next = 3;\n return nextRepaint();\n\n case 3:\n this.frame = _context16.sent;\n _context16.next = 6;\n return callback();\n\n case 6:\n delete this.frame;\n\n case 7:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function render(_x15) {\n return _render3.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"renderPageSnapshot\",\n value: function () {\n var _renderPageSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee18(snapshot, isPreview) {\n var _this24 = this;\n\n return _regeneratorRuntime.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n _context18.next = 2;\n return this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17() {\n return _regeneratorRuntime.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return _this24.view.renderPage(snapshot, isPreview, _this24.willRender, _this24);\n\n case 2:\n _this24.performScroll();\n\n case 3:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17);\n })));\n\n case 2:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function renderPageSnapshot(_x16, _x17) {\n return _renderPageSnapshot.apply(this, arguments);\n }\n\n return renderPageSnapshot;\n }()\n }, {\n key: \"cancelRender\",\n value: function cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n }]);\n\n return Visit;\n}();\n\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300;\n}\n\nvar BrowserAdapter = /*#__PURE__*/function () {\n function BrowserAdapter(session) {\n var _this25 = this;\n\n _classCallCheck(this, BrowserAdapter);\n\n this.progressBar = new ProgressBar();\n\n this.showProgressBar = function () {\n _this25.progressBar.show();\n };\n\n this.session = session;\n }\n\n _createClass(BrowserAdapter, [{\n key: \"visitProposedToLocation\",\n value: function visitProposedToLocation(location, options) {\n if (locationIsVisitable(location, this.navigator.rootLocation)) {\n this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n } else {\n window.location.href = location.toString();\n }\n }\n }, {\n key: \"visitStarted\",\n value: function visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n }, {\n key: \"visitRequestStarted\",\n value: function visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n }, {\n key: \"visitRequestCompleted\",\n value: function visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n }, {\n key: \"visitRequestFailedWithStatusCode\",\n value: function visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode: statusCode\n }\n });\n\n default:\n return visit.loadResponse();\n }\n }\n }, {\n key: \"visitRequestFinished\",\n value: function visitRequestFinished(_visit) {}\n }, {\n key: \"visitCompleted\",\n value: function visitCompleted(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n }, {\n key: \"pageInvalidated\",\n value: function pageInvalidated(reason) {\n this.reload(reason);\n }\n }, {\n key: \"visitFailed\",\n value: function visitFailed(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n }, {\n key: \"visitRendered\",\n value: function visitRendered(_visit) {} // Form Submission Delegate\n\n }, {\n key: \"formSubmissionStarted\",\n value: function formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n }, {\n key: \"formSubmissionFinished\",\n value: function formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n } // Private\n\n }, {\n key: \"showVisitProgressBarAfterDelay\",\n value: function showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }, {\n key: \"hideVisitProgressBar\",\n value: function hideVisitProgressBar() {\n this.progressBar.hide();\n\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n }, {\n key: \"showFormProgressBarAfterDelay\",\n value: function showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n }, {\n key: \"hideFormProgressBar\",\n value: function hideFormProgressBar() {\n this.progressBar.hide();\n\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n }, {\n key: \"reload\",\n value: function reload(reason) {\n var _this$location;\n\n dispatch(\"turbo:reload\", {\n detail: reason\n });\n window.location.href = ((_this$location = this.location) === null || _this$location === void 0 ? void 0 : _this$location.toString()) || window.location.href;\n }\n }, {\n key: \"navigator\",\n get: function get() {\n return this.session.navigator;\n }\n }]);\n\n return BrowserAdapter;\n}();\n\nvar CacheObserver = /*#__PURE__*/function () {\n function CacheObserver() {\n var _this26 = this;\n\n _classCallCheck(this, CacheObserver);\n\n this.selector = \"[data-turbo-temporary]\";\n this.deprecatedSelector = \"[data-turbo-cache=false]\";\n this.started = false;\n\n this.removeTemporaryElements = function (_event) {\n var _iterator15 = _createForOfIteratorHelper(_this26.temporaryElements),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var element = _step15.value;\n element.remove();\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n };\n }\n\n _createClass(CacheObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n }, {\n key: \"temporaryElements\",\n get: function get() {\n return [].concat(_toConsumableArray(document.querySelectorAll(this.selector)), _toConsumableArray(this.temporaryElementsWithDeprecation));\n }\n }, {\n key: \"temporaryElementsWithDeprecation\",\n get: function get() {\n var elements = document.querySelectorAll(this.deprecatedSelector);\n\n if (elements.length) {\n console.warn(\"The \".concat(this.deprecatedSelector, \" selector is deprecated and will be removed in a future version. Use \").concat(this.selector, \" instead.\"));\n }\n\n return _toConsumableArray(elements);\n }\n }]);\n\n return CacheObserver;\n}();\n\nvar _shouldSubmit = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldSubmit\");\n\nvar _shouldRedirect = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldRedirect\");\n\nvar _findFrameElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"findFrameElement\");\n\nvar FrameRedirector = /*#__PURE__*/function () {\n function FrameRedirector(session, _element2) {\n _classCallCheck(this, FrameRedirector);\n\n Object.defineProperty(this, _findFrameElement, {\n value: _findFrameElement2\n });\n Object.defineProperty(this, _shouldRedirect, {\n value: _shouldRedirect2\n });\n Object.defineProperty(this, _shouldSubmit, {\n value: _shouldSubmit2\n });\n this.session = session;\n this.element = _element2;\n this.linkInterceptor = new LinkInterceptor(this, _element2);\n this.formSubmitObserver = new FormSubmitObserver(this, _element2);\n }\n\n _createClass(FrameRedirector, [{\n key: \"start\",\n value: function start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n } // Link interceptor delegate\n\n }, {\n key: \"shouldInterceptLinkClick\",\n value: function shouldInterceptLinkClick(element, _location, _event) {\n return _classPrivateFieldLooseBase(this, _shouldRedirect)[_shouldRedirect](element);\n }\n }, {\n key: \"linkClickIntercepted\",\n value: function linkClickIntercepted(element, url, event) {\n var frame = _classPrivateFieldLooseBase(this, _findFrameElement)[_findFrameElement](element);\n\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n } // Form submit observer delegate\n\n }, {\n key: \"willSubmitForm\",\n value: function willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == null && _classPrivateFieldLooseBase(this, _shouldSubmit)[_shouldSubmit](element, submitter) && _classPrivateFieldLooseBase(this, _shouldRedirect)[_shouldRedirect](element, submitter);\n }\n }, {\n key: \"formSubmitted\",\n value: function formSubmitted(element, submitter) {\n var frame = _classPrivateFieldLooseBase(this, _findFrameElement)[_findFrameElement](element, submitter);\n\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n }]);\n\n return FrameRedirector;\n}();\n\nfunction _shouldSubmit2(form, submitter) {\n var _meta$content2;\n\n var action = getAction$1(form, submitter);\n var meta = this.element.ownerDocument.querySelector(\"meta[name=\\\"turbo-root\\\"]\");\n var rootLocation = expandURL((_meta$content2 = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _meta$content2 !== void 0 ? _meta$content2 : \"/\");\n return _classPrivateFieldLooseBase(this, _shouldRedirect)[_shouldRedirect](form, submitter) && locationIsVisitable(action, rootLocation);\n}\n\nfunction _shouldRedirect2(element, submitter) {\n var isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter) : this.session.elementIsNavigatable(element);\n\n if (isNavigatable) {\n var frame = _classPrivateFieldLooseBase(this, _findFrameElement)[_findFrameElement](element, submitter);\n\n return frame ? frame != element.closest(\"turbo-frame\") : false;\n } else {\n return false;\n }\n}\n\nfunction _findFrameElement2(element, submitter) {\n var id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n\n if (id && id != \"_top\") {\n var frame = this.element.querySelector(\"#\".concat(id, \":not([disabled])\"));\n\n if (frame instanceof FrameElement) {\n return frame;\n }\n }\n}\n\nvar History = /*#__PURE__*/function () {\n function History(delegate) {\n var _this27 = this;\n\n _classCallCheck(this, History);\n\n this.location = void 0;\n this.restorationIdentifier = uuid();\n this.restorationData = {};\n this.started = false;\n this.pageLoaded = false;\n this.currentIndex = 0;\n\n this.onPopState = function (event) {\n if (_this27.shouldHandlePopState()) {\n var _ref22 = event.state || {},\n turbo = _ref22.turbo;\n\n if (turbo) {\n _this27.location = new URL(window.location.href);\n var restorationIdentifier = turbo.restorationIdentifier,\n restorationIndex = turbo.restorationIndex;\n _this27.restorationIdentifier = restorationIdentifier;\n var direction = restorationIndex > _this27.currentIndex ? \"forward\" : \"back\";\n\n _this27.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(_this27.location, restorationIdentifier, direction);\n\n _this27.currentIndex = restorationIndex;\n }\n }\n };\n\n this.onPageLoad = /*#__PURE__*/function () {\n var _ref23 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee19(_event) {\n return _regeneratorRuntime.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n _context19.next = 2;\n return nextMicrotask();\n\n case 2:\n _this27.pageLoaded = true;\n\n case 3:\n case \"end\":\n return _context19.stop();\n }\n }\n }, _callee19);\n }));\n\n return function (_x18) {\n return _ref23.apply(this, arguments);\n };\n }();\n\n this.delegate = delegate;\n }\n\n _createClass(History, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n var _history$state, _history$state$turbo;\n\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.currentIndex = ((_history$state = history.state) === null || _history$state === void 0 ? void 0 : (_history$state$turbo = _history$state.turbo) === null || _history$state$turbo === void 0 ? void 0 : _history$state$turbo.restorationIndex) || 0;\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n }, {\n key: \"push\",\n value: function push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n }, {\n key: \"replace\",\n value: function replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n }, {\n key: \"update\",\n value: function update(method, location) {\n var restorationIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : uuid();\n if (method === history.pushState) ++this.currentIndex;\n var state = {\n turbo: {\n restorationIdentifier: restorationIdentifier,\n restorationIndex: this.currentIndex\n }\n };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n } // Restoration data\n\n }, {\n key: \"getRestorationDataForIdentifier\",\n value: function getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {};\n }\n }, {\n key: \"updateRestorationData\",\n value: function updateRestorationData(additionalData) {\n var restorationIdentifier = this.restorationIdentifier;\n var restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = _objectSpread(_objectSpread({}, restorationData), additionalData);\n } // Scroll restoration\n\n }, {\n key: \"assumeControlOfScrollRestoration\",\n value: function assumeControlOfScrollRestoration() {\n if (!this.previousScrollRestoration) {\n var _history$scrollRestor;\n\n this.previousScrollRestoration = (_history$scrollRestor = history.scrollRestoration) !== null && _history$scrollRestor !== void 0 ? _history$scrollRestor : \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n }, {\n key: \"relinquishControlOfScrollRestoration\",\n value: function relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n } // Event handlers\n\n }, {\n key: \"shouldHandlePopState\",\n value: // Private\n function shouldHandlePopState() {\n // Safari dispatches a popstate event after window's load event, ignore it\n return this.pageIsLoaded();\n }\n }, {\n key: \"pageIsLoaded\",\n value: function pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\";\n }\n }]);\n\n return History;\n}();\n\nvar _getActionForFormSubmission = /*#__PURE__*/_classPrivateFieldLooseKey(\"getActionForFormSubmission\");\n\nvar _getDefaultAction = /*#__PURE__*/_classPrivateFieldLooseKey(\"getDefaultAction\");\n\nvar Navigator = /*#__PURE__*/function () {\n function Navigator(delegate) {\n _classCallCheck(this, Navigator);\n\n Object.defineProperty(this, _getDefaultAction, {\n value: _getDefaultAction2\n });\n Object.defineProperty(this, _getActionForFormSubmission, {\n value: _getActionForFormSubmission2\n });\n this.delegate = delegate;\n }\n\n _createClass(Navigator, [{\n key: \"proposeVisit\",\n value: function proposeVisit(location) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n }\n }, {\n key: \"startVisit\",\n value: function startVisit(locatable, restorationIdentifier) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, _objectSpread({\n referrer: this.location\n }, options));\n this.currentVisit.start();\n }\n }, {\n key: \"submitForm\",\n value: function submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n this.formSubmission.start();\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n }, {\n key: \"adapter\",\n get: function get() {\n return this.delegate.adapter;\n }\n }, {\n key: \"view\",\n get: function get() {\n return this.delegate.view;\n }\n }, {\n key: \"rootLocation\",\n get: function get() {\n return this.view.snapshot.rootLocation;\n }\n }, {\n key: \"history\",\n get: function get() {\n return this.delegate.history;\n } // Form submission delegate\n\n }, {\n key: \"formSubmissionStarted\",\n value: function formSubmissionStarted(formSubmission) {\n // Not all adapters implement formSubmissionStarted\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n }, {\n key: \"formSubmissionSucceededWithResponse\",\n value: function () {\n var _formSubmissionSucceededWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee20(formSubmission, fetchResponse) {\n var responseHTML, shouldCacheSnapshot, statusCode, redirected, action, visitOptions;\n return _regeneratorRuntime.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n if (!(formSubmission == this.formSubmission)) {\n _context20.next = 5;\n break;\n }\n\n _context20.next = 3;\n return fetchResponse.responseHTML;\n\n case 3:\n responseHTML = _context20.sent;\n\n if (responseHTML) {\n shouldCacheSnapshot = formSubmission.isSafe;\n\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n\n statusCode = fetchResponse.statusCode, redirected = fetchResponse.redirected;\n action = _classPrivateFieldLooseBase(this, _getActionForFormSubmission)[_getActionForFormSubmission](formSubmission, fetchResponse);\n visitOptions = {\n action: action,\n shouldCacheSnapshot: shouldCacheSnapshot,\n response: {\n statusCode: statusCode,\n responseHTML: responseHTML,\n redirected: redirected\n }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n\n case 5:\n case \"end\":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function formSubmissionSucceededWithResponse(_x19, _x20) {\n return _formSubmissionSucceededWithResponse.apply(this, arguments);\n }\n\n return formSubmissionSucceededWithResponse;\n }()\n }, {\n key: \"formSubmissionFailedWithResponse\",\n value: function () {\n var _formSubmissionFailedWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(formSubmission, fetchResponse) {\n var responseHTML, snapshot;\n return _regeneratorRuntime.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n _context21.next = 2;\n return fetchResponse.responseHTML;\n\n case 2:\n responseHTML = _context21.sent;\n\n if (!responseHTML) {\n _context21.next = 14;\n break;\n }\n\n snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n if (!fetchResponse.serverError) {\n _context21.next = 10;\n break;\n }\n\n _context21.next = 8;\n return this.view.renderError(snapshot, this.currentVisit);\n\n case 8:\n _context21.next = 12;\n break;\n\n case 10:\n _context21.next = 12;\n return this.view.renderPage(snapshot, false, true, this.currentVisit);\n\n case 12:\n if (!snapshot.shouldPreserveScrollPosition) {\n this.view.scrollToTop();\n }\n\n this.view.clearSnapshotCache();\n\n case 14:\n case \"end\":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function formSubmissionFailedWithResponse(_x21, _x22) {\n return _formSubmissionFailedWithResponse.apply(this, arguments);\n }\n\n return formSubmissionFailedWithResponse;\n }()\n }, {\n key: \"formSubmissionErrored\",\n value: function formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n }, {\n key: \"formSubmissionFinished\",\n value: function formSubmissionFinished(formSubmission) {\n // Not all adapters implement formSubmissionFinished\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n } // Visit delegate\n\n }, {\n key: \"visitStarted\",\n value: function visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n }, {\n key: \"visitCompleted\",\n value: function visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n }\n }, {\n key: \"locationWithActionIsSamePage\",\n value: function locationWithActionIsSamePage(location, action) {\n var anchor = getAnchor(location);\n var currentAnchor = getAnchor(this.view.lastRenderedLocation);\n var isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n return action !== \"replace\" && getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor);\n }\n }, {\n key: \"visitScrolledToSamePageLocation\",\n value: function visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n } // Visits\n\n }, {\n key: \"location\",\n get: function get() {\n return this.history.location;\n }\n }, {\n key: \"restorationIdentifier\",\n get: function get() {\n return this.history.restorationIdentifier;\n }\n }]);\n\n return Navigator;\n}();\n\nfunction _getActionForFormSubmission2(formSubmission, fetchResponse) {\n var submitter = formSubmission.submitter,\n formElement = formSubmission.formElement;\n return getVisitAction(submitter, formElement) || _classPrivateFieldLooseBase(this, _getDefaultAction)[_getDefaultAction](fetchResponse);\n}\n\nfunction _getDefaultAction2(fetchResponse) {\n var _this$location2;\n\n var sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === ((_this$location2 = this.location) === null || _this$location2 === void 0 ? void 0 : _this$location2.href);\n return sameLocationRedirect ? \"replace\" : \"advance\";\n}\n\nvar PageStage = {\n initial: 0,\n loading: 1,\n interactive: 2,\n complete: 3\n};\n\nvar PageObserver = /*#__PURE__*/function () {\n function PageObserver(delegate) {\n var _this28 = this;\n\n _classCallCheck(this, PageObserver);\n\n this.stage = PageStage.initial;\n this.started = false;\n\n this.interpretReadyState = function () {\n var readyState = _this28.readyState;\n\n if (readyState == \"interactive\") {\n _this28.pageIsInteractive();\n } else if (readyState == \"complete\") {\n _this28.pageIsComplete();\n }\n };\n\n this.pageWillUnload = function () {\n _this28.delegate.pageWillUnload();\n };\n\n this.delegate = delegate;\n }\n\n _createClass(PageObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n }, {\n key: \"pageIsInteractive\",\n value: function pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n }, {\n key: \"pageIsComplete\",\n value: function pageIsComplete() {\n this.pageIsInteractive();\n\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n }, {\n key: \"readyState\",\n get: function get() {\n return document.readyState;\n }\n }]);\n\n return PageObserver;\n}();\n\nvar ScrollObserver = /*#__PURE__*/function () {\n function ScrollObserver(delegate) {\n var _this29 = this;\n\n _classCallCheck(this, ScrollObserver);\n\n this.started = false;\n\n this.onScroll = function () {\n _this29.updatePosition({\n x: window.pageXOffset,\n y: window.pageYOffset\n });\n };\n\n this.delegate = delegate;\n }\n\n _createClass(ScrollObserver, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n }, {\n key: \"updatePosition\",\n value: // Private\n function updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n }]);\n\n return ScrollObserver;\n}();\n\nvar StreamMessageRenderer = /*#__PURE__*/function () {\n function StreamMessageRenderer() {\n _classCallCheck(this, StreamMessageRenderer);\n }\n\n _createClass(StreamMessageRenderer, [{\n key: \"render\",\n value: function render(_ref24) {\n var fragment = _ref24.fragment;\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), function () {\n withAutofocusFromFragment(fragment, function () {\n withPreservedFocus(function () {\n document.documentElement.appendChild(fragment);\n });\n });\n });\n } // Bardo delegate\n\n }, {\n key: \"enteringBardo\",\n value: function enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n }, {\n key: \"leavingBardo\",\n value: function leavingBardo() {}\n }]);\n\n return StreamMessageRenderer;\n}();\n\nfunction getPermanentElementMapForFragment(fragment) {\n var permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n var permanentElementMap = {};\n\n var _iterator16 = _createForOfIteratorHelper(permanentElementsInDocument),\n _step16;\n\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var permanentElementInDocument = _step16.value;\n var _id4 = permanentElementInDocument.id;\n\n var _iterator17 = _createForOfIteratorHelper(fragment.querySelectorAll(\"turbo-stream\")),\n _step17;\n\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var streamElement = _step17.value;\n\n var elementInStream = _getPermanentElementById(streamElement.templateElement.content, _id4);\n\n if (elementInStream) {\n permanentElementMap[_id4] = [permanentElementInDocument, elementInStream];\n }\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n\n return permanentElementMap;\n}\n\nfunction withAutofocusFromFragment(_x23, _x24) {\n return _withAutofocusFromFragment.apply(this, arguments);\n}\n\nfunction _withAutofocusFromFragment() {\n _withAutofocusFromFragment = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee46(fragment, callback) {\n var generatedID, turboStreams, elementWithAutofocus, willAutofocusId, hasNoActiveElement, elementToAutofocus;\n return _regeneratorRuntime.wrap(function _callee46$(_context46) {\n while (1) {\n switch (_context46.prev = _context46.next) {\n case 0:\n generatedID = \"turbo-stream-autofocus-\".concat(uuid());\n turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n willAutofocusId = null;\n\n if (elementWithAutofocus) {\n if (elementWithAutofocus.id) {\n willAutofocusId = elementWithAutofocus.id;\n } else {\n willAutofocusId = generatedID;\n }\n\n elementWithAutofocus.id = willAutofocusId;\n }\n\n callback();\n _context46.next = 8;\n return nextRepaint();\n\n case 8:\n hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n if (hasNoActiveElement && willAutofocusId) {\n elementToAutofocus = document.getElementById(willAutofocusId);\n\n if (elementIsFocusable(elementToAutofocus)) {\n elementToAutofocus.focus();\n }\n\n if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n elementToAutofocus.removeAttribute(\"id\");\n }\n }\n\n case 10:\n case \"end\":\n return _context46.stop();\n }\n }\n }, _callee46);\n }));\n return _withAutofocusFromFragment.apply(this, arguments);\n}\n\nfunction withPreservedFocus(_x25) {\n return _withPreservedFocus.apply(this, arguments);\n}\n\nfunction _withPreservedFocus() {\n _withPreservedFocus = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee47(callback) {\n var _yield$around, _yield$around2, activeElementBeforeRender, activeElementAfterRender, restoreFocusTo, elementToFocus;\n\n return _regeneratorRuntime.wrap(function _callee47$(_context47) {\n while (1) {\n switch (_context47.prev = _context47.next) {\n case 0:\n _context47.next = 2;\n return around(callback, function () {\n return document.activeElement;\n });\n\n case 2:\n _yield$around = _context47.sent;\n _yield$around2 = _slicedToArray(_yield$around, 2);\n activeElementBeforeRender = _yield$around2[0];\n activeElementAfterRender = _yield$around2[1];\n restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n if (restoreFocusTo) {\n elementToFocus = document.getElementById(restoreFocusTo);\n\n if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n elementToFocus.focus();\n }\n }\n\n case 8:\n case \"end\":\n return _context47.stop();\n }\n }\n }, _callee47);\n }));\n return _withPreservedFocus.apply(this, arguments);\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n var _iterator18 = _createForOfIteratorHelper(nodeListOfStreamElements),\n _step18;\n\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var streamElement = _step18.value;\n var elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n if (elementWithAutofocus) return elementWithAutofocus;\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n\n return null;\n}\n\nvar _started = /*#__PURE__*/_classPrivateFieldLooseKey(\"started\");\n\nvar StreamObserver = /*#__PURE__*/function () {\n function StreamObserver(delegate) {\n var _this30 = this;\n\n _classCallCheck(this, StreamObserver);\n\n this.sources = new Set();\n Object.defineProperty(this, _started, {\n writable: true,\n value: false\n });\n\n this.inspectFetchResponse = function (event) {\n var response = fetchResponseFromEvent(event);\n\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n\n _this30.receiveMessageResponse(response);\n }\n };\n\n this.receiveMessageEvent = function (event) {\n if (_classPrivateFieldLooseBase(_this30, _started)[_started] && typeof event.data == \"string\") {\n _this30.receiveMessageHTML(event.data);\n }\n };\n\n this.delegate = delegate;\n }\n\n _createClass(StreamObserver, [{\n key: \"start\",\n value: function start() {\n if (!_classPrivateFieldLooseBase(this, _started)[_started]) {\n _classPrivateFieldLooseBase(this, _started)[_started] = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (_classPrivateFieldLooseBase(this, _started)[_started]) {\n _classPrivateFieldLooseBase(this, _started)[_started] = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n }, {\n key: \"connectStreamSource\",\n value: function connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n }, {\n key: \"disconnectStreamSource\",\n value: function disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n }, {\n key: \"streamSourceIsConnected\",\n value: function streamSourceIsConnected(source) {\n return this.sources.has(source);\n }\n }, {\n key: \"receiveMessageResponse\",\n value: function () {\n var _receiveMessageResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(response) {\n var html;\n return _regeneratorRuntime.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n _context22.next = 2;\n return response.responseHTML;\n\n case 2:\n html = _context22.sent;\n\n if (html) {\n this.receiveMessageHTML(html);\n }\n\n case 4:\n case \"end\":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function receiveMessageResponse(_x26) {\n return _receiveMessageResponse.apply(this, arguments);\n }\n\n return receiveMessageResponse;\n }()\n }, {\n key: \"receiveMessageHTML\",\n value: function receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n }]);\n\n return StreamObserver;\n}();\n\nfunction fetchResponseFromEvent(event) {\n var _event$detail;\n\n var fetchResponse = (_event$detail = event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.fetchResponse;\n\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse;\n }\n}\n\nfunction fetchResponseIsStream(response) {\n var _response$contentType;\n\n var contentType = (_response$contentType = response.contentType) !== null && _response$contentType !== void 0 ? _response$contentType : \"\";\n return contentType.startsWith(StreamMessage.contentType);\n}\n\nvar ErrorRenderer = /*#__PURE__*/function (_Renderer2) {\n _inherits(ErrorRenderer, _Renderer2);\n\n var _super7 = _createSuper(ErrorRenderer);\n\n function ErrorRenderer() {\n _classCallCheck(this, ErrorRenderer);\n\n return _super7.apply(this, arguments);\n }\n\n _createClass(ErrorRenderer, [{\n key: \"render\",\n value: function () {\n var _render4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23() {\n return _regeneratorRuntime.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n this.replaceHeadAndBody();\n this.activateScriptElements();\n\n case 2:\n case \"end\":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function render() {\n return _render4.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"replaceHeadAndBody\",\n value: function replaceHeadAndBody() {\n var _document = document,\n documentElement = _document.documentElement,\n head = _document.head;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n }, {\n key: \"activateScriptElements\",\n value: function activateScriptElements() {\n var _iterator19 = _createForOfIteratorHelper(this.scriptElements),\n _step19;\n\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var replaceableElement = _step19.value;\n var parentNode = replaceableElement.parentNode;\n\n if (parentNode) {\n var element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n }\n }, {\n key: \"newHead\",\n get: function get() {\n return this.newSnapshot.headSnapshot.element;\n }\n }, {\n key: \"scriptElements\",\n get: function get() {\n return document.documentElement.querySelectorAll(\"script\");\n }\n }], [{\n key: \"renderElement\",\n value: function renderElement(currentElement, newElement) {\n var _document2 = document,\n documentElement = _document2.documentElement,\n body = _document2.body;\n documentElement.replaceChild(newElement, body);\n }\n }]);\n\n return ErrorRenderer;\n}(Renderer);\n\nvar EMPTY_SET = new Set(); //=============================================================================\n// Core Morphing Algorithm - morph, morphNormalizedContent, morphOldNodeTo, morphChildren\n//=============================================================================\n\nfunction morph(oldNode, newContent) {\n var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (oldNode instanceof Document) {\n oldNode = oldNode.documentElement;\n }\n\n if (typeof newContent === 'string') {\n newContent = parseContent(newContent);\n }\n\n var normalizedContent = normalizeContent(newContent);\n var ctx = createMorphContext(oldNode, normalizedContent, config);\n return morphNormalizedContent(oldNode, normalizedContent, ctx);\n}\n\nfunction morphNormalizedContent(oldNode, normalizedNewContent, ctx) {\n if (ctx.head.block) {\n var oldHead = oldNode.querySelector('head');\n var newHead = normalizedNewContent.querySelector('head');\n\n if (oldHead && newHead) {\n var promises = handleHeadElement(newHead, oldHead, ctx); // when head promises resolve, call morph again, ignoring the head tag\n\n Promise.all(promises).then(function () {\n morphNormalizedContent(oldNode, normalizedNewContent, Object.assign(ctx, {\n head: {\n block: false,\n ignore: true\n }\n }));\n });\n return;\n }\n }\n\n if (ctx.morphStyle === \"innerHTML\") {\n // innerHTML, so we are only updating the children\n morphChildren(normalizedNewContent, oldNode, ctx);\n return oldNode.children;\n } else if (ctx.morphStyle === \"outerHTML\" || ctx.morphStyle == null) {\n // otherwise find the best element match in the new content, morph that, and merge its siblings\n // into either side of the best match\n var bestMatch = findBestNodeMatch(normalizedNewContent, oldNode, ctx); // stash the siblings that will need to be inserted on either side of the best match\n\n var previousSibling = bestMatch === null || bestMatch === void 0 ? void 0 : bestMatch.previousSibling;\n var nextSibling = bestMatch === null || bestMatch === void 0 ? void 0 : bestMatch.nextSibling; // morph it\n\n var morphedNode = morphOldNodeTo(oldNode, bestMatch, ctx);\n\n if (bestMatch) {\n // if there was a best match, merge the siblings in too and return the\n // whole bunch\n return insertSiblings(previousSibling, morphedNode, nextSibling);\n } else {\n // otherwise nothing was added to the DOM\n return [];\n }\n } else {\n throw \"Do not understand how to morph style \" + ctx.morphStyle;\n }\n}\n/**\n * @param oldNode root node to merge content into\n * @param newContent new content to merge\n * @param ctx the merge context\n * @returns {Element} the element that ended up in the DOM\n */\n\n\nfunction morphOldNodeTo(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) ;else if (newContent == null) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return;\n oldNode.remove();\n ctx.callbacks.afterNodeRemoved(oldNode);\n return null;\n } else if (!isSoftMatch(oldNode, newContent)) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return;\n if (ctx.callbacks.beforeNodeAdded(newContent) === false) return;\n oldNode.parentElement.replaceChild(newContent, oldNode);\n ctx.callbacks.afterNodeAdded(newContent);\n ctx.callbacks.afterNodeRemoved(oldNode);\n return newContent;\n } else {\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) return;\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ;else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== \"morph\") {\n handleHeadElement(newContent, oldNode, ctx);\n } else {\n syncNodeFrom(newContent, oldNode);\n morphChildren(newContent, oldNode, ctx);\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n}\n/**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm is, for each node in the new content:\n *\n * - if we have reached the end of the old parent, append the new content\n * - if the new content has an id set match with the current insertion point, morph\n * - search for an id set match\n * - if id set match found, morph\n * - otherwise search for a \"soft\" match\n * - if a soft match is found, morph\n * - otherwise, prepend the new node before the current insertion point\n *\n * The two search algorithms terminate if competing node matches appear to outweigh what can be achieved\n * with the current node. See findIdSetMatch() and findSoftMatch() for details.\n *\n * @param {Element} newParent the parent element of the new content\n * @param {Element } oldParent the old content that we are merging the new content into\n * @param ctx the merge context\n */\n\n\nfunction morphChildren(newParent, oldParent, ctx) {\n var nextNewChild = newParent.firstChild;\n var insertionPoint = oldParent.firstChild;\n var newChild; // run through all the new content\n\n while (nextNewChild) {\n newChild = nextNewChild;\n nextNewChild = newChild.nextSibling; // if we are at the end of the exiting parent's children, just append\n\n if (insertionPoint == null) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n oldParent.appendChild(newChild);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n } // if the current node has an id set match then morph\n\n\n if (isIdSetMatch(newChild, insertionPoint, ctx)) {\n morphOldNodeTo(insertionPoint, newChild, ctx);\n insertionPoint = insertionPoint.nextSibling;\n removeIdsFromConsideration(ctx, newChild);\n continue;\n } // otherwise search forward in the existing old children for an id set match\n\n\n var idSetMatch = findIdSetMatch(newParent, oldParent, newChild, insertionPoint, ctx); // if we found a potential match, remove the nodes until that point and morph\n\n if (idSetMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, idSetMatch, ctx);\n morphOldNodeTo(idSetMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n } // no id set match found, so scan forward for a soft match for the current node\n\n\n var softMatch = findSoftMatch(newParent, oldParent, newChild, insertionPoint, ctx); // if we found a soft match for the current node, morph\n\n if (softMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, softMatch, ctx);\n morphOldNodeTo(softMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n } // abandon all hope of morphing, just insert the new child before the insertion point\n // and move on\n\n\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n oldParent.insertBefore(newChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n } // remove any remaining old nodes that didn't match up with new content\n\n\n while (insertionPoint !== null) {\n var tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(tempNode, ctx);\n }\n} //=============================================================================\n// Attribute Syncing Code\n//=============================================================================\n\n/**\n * syncs a given node with another node, copying over all attributes and\n * inner element state from the 'from' node to the 'to' node\n *\n * @param {Element} from the element to copy attributes & state from\n * @param {Element} to the element to copy attributes & state to\n */\n\n\nfunction syncNodeFrom(from, to) {\n var type = from.nodeType; // if is an element type, sync the attributes from the\n // new node into the new node\n\n if (type === 1\n /* element type */\n ) {\n var fromAttributes = from.attributes;\n var toAttributes = to.attributes;\n\n var _iterator20 = _createForOfIteratorHelper(fromAttributes),\n _step20;\n\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var fromAttribute = _step20.value;\n\n if (to.getAttribute(fromAttribute.name) !== fromAttribute.value) {\n to.setAttribute(fromAttribute.name, fromAttribute.value);\n }\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n\n var _iterator21 = _createForOfIteratorHelper(toAttributes),\n _step21;\n\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var toAttribute = _step21.value;\n\n if (!from.hasAttribute(toAttribute.name)) {\n to.removeAttribute(toAttribute.name);\n }\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n } // sync text nodes\n\n\n if (type === 8\n /* comment */\n || type === 3\n /* text */\n ) {\n if (to.nodeValue !== from.nodeValue) {\n to.nodeValue = from.nodeValue;\n }\n } // NB: many bothans died to bring us information:\n //\n // https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n // https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n // sync input value\n\n\n if (from instanceof HTMLInputElement && to instanceof HTMLInputElement && from.type !== 'file') {\n to.value = from.value || '';\n syncAttribute(from, to, 'value'); // sync boolean attributes\n\n syncAttribute(from, to, 'checked');\n syncAttribute(from, to, 'disabled');\n } else if (from instanceof HTMLOptionElement) {\n syncAttribute(from, to, 'selected');\n } else if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) {\n var fromValue = from.value;\n var toValue = to.value;\n\n if (fromValue !== toValue) {\n to.value = fromValue;\n }\n\n if (to.firstChild && to.firstChild.nodeValue !== fromValue) {\n to.firstChild.nodeValue = fromValue;\n }\n }\n}\n\nfunction syncAttribute(from, to, attributeName) {\n if (from[attributeName] !== to[attributeName]) {\n if (from[attributeName]) {\n to.setAttribute(attributeName, from[attributeName]);\n } else {\n to.removeAttribute(attributeName);\n }\n }\n} //=============================================================================\n// the HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n//=============================================================================\n\n\nfunction handleHeadElement(newHeadTag, currentHead, ctx) {\n var added = [];\n var removed = [];\n var preserved = [];\n var nodesToAppend = [];\n var headMergeStyle = ctx.head.style; // put all new head elements into a Map, by their outerHTML\n\n var srcToNewHeadNodes = new Map();\n\n var _iterator22 = _createForOfIteratorHelper(newHeadTag.children),\n _step22;\n\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var newHeadChild = _step22.value;\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n } // for each elt in the current head\n\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n\n var _iterator23 = _createForOfIteratorHelper(currentHead.children),\n _step23;\n\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n var currentHeadElt = _step23.value;\n // If the current head element is in the map\n var inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n var isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n var isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (headMergeStyle === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n } // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n\n nodesToAppend.push.apply(nodesToAppend, _toConsumableArray(srcToNewHeadNodes.values()));\n var promises = [];\n\n for (var _i3 = 0, _nodesToAppend = nodesToAppend; _i3 < _nodesToAppend.length; _i3++) {\n var newNode = _nodesToAppend[_i3];\n var newElt = document.createRange().createContextualFragment(newNode.outerHTML).firstChild;\n\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (newElt.href || newElt.src) {\n (function () {\n var resolve = null;\n var promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener('load', function () {\n resolve();\n });\n promises.push(promise);\n })();\n }\n\n currentHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n } // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n\n\n for (var _i4 = 0, _removed = removed; _i4 < _removed.length; _i4++) {\n var removedElement = _removed[_i4];\n\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n currentHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n\n ctx.head.afterHeadMorphed(currentHead, {\n added: added,\n kept: preserved,\n removed: removed\n });\n return promises;\n}\n\nfunction noOp() {}\n\nfunction createMorphContext(oldNode, newContent, config) {\n return {\n target: oldNode,\n newContent: newContent,\n config: config,\n morphStyle: config.morphStyle,\n ignoreActive: config.ignoreActive,\n idMap: createIdMap(oldNode, newContent),\n deadIds: new Set(),\n callbacks: Object.assign({\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp\n }, config.callbacks),\n head: Object.assign({\n style: 'merge',\n shouldPreserve: function shouldPreserve(elt) {\n return elt.getAttribute(\"im-preserve\") === \"true\";\n },\n shouldReAppend: function shouldReAppend(elt) {\n return elt.getAttribute(\"im-re-append\") === \"true\";\n },\n shouldRemove: noOp,\n afterHeadMorphed: noOp\n }, config.head)\n };\n}\n\nfunction isIdSetMatch(node1, node2, ctx) {\n if (node1 == null || node2 == null) {\n return false;\n }\n\n if (node1.nodeType === node2.nodeType && node1.tagName === node2.tagName) {\n if (node1.id !== \"\" && node1.id === node2.id) {\n return true;\n } else {\n return getIdIntersectionCount(ctx, node1, node2) > 0;\n }\n }\n\n return false;\n}\n\nfunction isSoftMatch(node1, node2) {\n if (node1 == null || node2 == null) {\n return false;\n }\n\n return node1.nodeType === node2.nodeType && node1.tagName === node2.tagName;\n}\n\nfunction removeNodesBetween(startInclusive, endExclusive, ctx) {\n while (startInclusive !== endExclusive) {\n var tempNode = startInclusive;\n startInclusive = startInclusive.nextSibling;\n removeNode(tempNode, ctx);\n }\n\n removeIdsFromConsideration(ctx, endExclusive);\n return endExclusive.nextSibling;\n} //=============================================================================\n// Scans forward from the insertionPoint in the old parent looking for a potential id match\n// for the newChild. We stop if we find a potential id match for the new child OR\n// if the number of potential id matches we are discarding is greater than the\n// potential id matches for the new child\n//=============================================================================\n\n\nfunction findIdSetMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n // max id matches we are willing to discard in our search\n var newChildPotentialIdCount = getIdIntersectionCount(ctx, newChild, oldParent);\n var potentialMatch = null; // only search forward if there is a possibility of an id match\n\n if (newChildPotentialIdCount > 0) {\n var _potentialMatch = insertionPoint; // if there is a possibility of an id match, scan forward\n // keep track of the potential id match count we are discarding (the\n // newChildPotentialIdCount must be greater than this to make it likely\n // worth it)\n\n var otherMatchCount = 0;\n\n while (_potentialMatch != null) {\n // If we have an id match, return the current potential match\n if (isIdSetMatch(newChild, _potentialMatch, ctx)) {\n return _potentialMatch;\n } // computer the other potential matches of this new content\n\n\n otherMatchCount += getIdIntersectionCount(ctx, _potentialMatch, newContent);\n\n if (otherMatchCount > newChildPotentialIdCount) {\n // if we have more potential id matches in _other_ content, we\n // do not have a good candidate for an id match, so return null\n return null;\n } // advanced to the next old content child\n\n\n _potentialMatch = _potentialMatch.nextSibling;\n }\n }\n\n return potentialMatch;\n} //=============================================================================\n// Scans forward from the insertionPoint in the old parent looking for a potential soft match\n// for the newChild. We stop if we find a potential soft match for the new child OR\n// if we find a potential id match in the old parents children OR if we find two\n// potential soft matches for the next two pieces of new content\n//=============================================================================\n\n\nfunction findSoftMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n var potentialSoftMatch = insertionPoint;\n var nextSibling = newChild.nextSibling;\n var siblingSoftMatchCount = 0;\n\n while (potentialSoftMatch != null) {\n if (getIdIntersectionCount(ctx, potentialSoftMatch, newContent) > 0) {\n // the current potential soft match has a potential id set match with the remaining new\n // content so bail out of looking\n return null;\n } // if we have a soft match with the current node, return it\n\n\n if (isSoftMatch(newChild, potentialSoftMatch)) {\n return potentialSoftMatch;\n }\n\n if (isSoftMatch(nextSibling, potentialSoftMatch)) {\n // the next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling; // If there are two future soft matches, bail to allow the siblings to soft match\n // so that we don't consume future soft matches for the sake of the current node\n\n if (siblingSoftMatchCount >= 2) {\n return null;\n }\n } // advanced to the next old content child\n\n\n potentialSoftMatch = potentialSoftMatch.nextSibling;\n }\n\n return potentialSoftMatch;\n}\n\nfunction parseContent(newContent) {\n var parser = new DOMParser(); // remove svgs to avoid false-positive matches on head, etc.\n\n var contentWithSvgsRemoved = newContent.replace(/]*>|>)([\\s\\S]*?)<\\/svg>/gim, ''); // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n\n if (contentWithSvgsRemoved.match(/<\\/html>/) || contentWithSvgsRemoved.match(/<\\/head>/) || contentWithSvgsRemoved.match(/<\\/body>/)) {\n var content = parser.parseFromString(newContent, \"text/html\"); // if it is a full HTML document, return the document itself as the parent container\n\n if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n content.generatedByIdiomorph = true;\n return content;\n } else {\n // otherwise return the html element as the parent container\n var htmlElement = content.firstChild;\n\n if (htmlElement) {\n htmlElement.generatedByIdiomorph = true;\n return htmlElement;\n } else {\n return null;\n }\n }\n } else {\n // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n // deal with touchy tags like tr, tbody, etc.\n var responseDoc = parser.parseFromString(\"\", \"text/html\");\n var _content = responseDoc.body.querySelector('template').content;\n _content.generatedByIdiomorph = true;\n return _content;\n }\n}\n\nfunction normalizeContent(newContent) {\n if (newContent == null) {\n // noinspection UnnecessaryLocalVariableJS\n var dummyParent = document.createElement('div');\n return dummyParent;\n } else if (newContent.generatedByIdiomorph) {\n // the template tag created by idiomorph parsing can serve as a dummy parent\n return newContent;\n } else if (newContent instanceof Node) {\n // a single node is added as a child to a dummy parent\n var _dummyParent = document.createElement('div');\n\n _dummyParent.append(newContent);\n\n return _dummyParent;\n } else {\n // all nodes in the array or HTMLElement collection are consolidated under\n // a single dummy parent element\n var _dummyParent2 = document.createElement('div');\n\n for (var _i5 = 0, _arr2 = _toConsumableArray(newContent); _i5 < _arr2.length; _i5++) {\n var elt = _arr2[_i5];\n\n _dummyParent2.append(elt);\n }\n\n return _dummyParent2;\n }\n}\n\nfunction insertSiblings(previousSibling, morphedNode, nextSibling) {\n var stack = [];\n var added = [];\n\n while (previousSibling != null) {\n stack.push(previousSibling);\n previousSibling = previousSibling.previousSibling;\n }\n\n while (stack.length > 0) {\n var node = stack.pop();\n added.push(node); // push added preceding siblings on in order and insert\n\n morphedNode.parentElement.insertBefore(node, morphedNode);\n }\n\n added.push(morphedNode);\n\n while (nextSibling != null) {\n stack.push(nextSibling);\n added.push(nextSibling); // here we are going in order, so push on as we scan, rather than add\n\n nextSibling = nextSibling.nextSibling;\n }\n\n while (stack.length > 0) {\n morphedNode.parentElement.insertBefore(stack.pop(), morphedNode.nextSibling);\n }\n\n return added;\n}\n\nfunction findBestNodeMatch(newContent, oldNode, ctx) {\n var currentElement;\n currentElement = newContent.firstChild;\n var bestElement = currentElement;\n var score = 0;\n\n while (currentElement) {\n var newScore = scoreElement(currentElement, oldNode, ctx);\n\n if (newScore > score) {\n bestElement = currentElement;\n score = newScore;\n }\n\n currentElement = currentElement.nextSibling;\n }\n\n return bestElement;\n}\n\nfunction scoreElement(node1, node2, ctx) {\n if (isSoftMatch(node1, node2)) {\n return .5 + getIdIntersectionCount(ctx, node1, node2);\n }\n\n return 0;\n}\n\nfunction removeNode(tempNode, ctx) {\n removeIdsFromConsideration(ctx, tempNode);\n if (ctx.callbacks.beforeNodeRemoved(tempNode) === false) return;\n tempNode.remove();\n ctx.callbacks.afterNodeRemoved(tempNode);\n} //=============================================================================\n// ID Set Functions\n//=============================================================================\n\n\nfunction isIdInConsideration(ctx, id) {\n return !ctx.deadIds.has(id);\n}\n\nfunction idIsWithinNode(ctx, id, targetNode) {\n var idSet = ctx.idMap.get(targetNode) || EMPTY_SET;\n return idSet.has(id);\n}\n\nfunction removeIdsFromConsideration(ctx, node) {\n var idSet = ctx.idMap.get(node) || EMPTY_SET;\n\n var _iterator24 = _createForOfIteratorHelper(idSet),\n _step24;\n\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n var _id5 = _step24.value;\n ctx.deadIds.add(_id5);\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n}\n\nfunction getIdIntersectionCount(ctx, node1, node2) {\n var sourceSet = ctx.idMap.get(node1) || EMPTY_SET;\n var matchCount = 0;\n\n var _iterator25 = _createForOfIteratorHelper(sourceSet),\n _step25;\n\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var _id6 = _step25.value;\n\n // a potential match is an id in the source and potentialIdsSet, but\n // that has not already been merged into the DOM\n if (isIdInConsideration(ctx, _id6) && idIsWithinNode(ctx, _id6, node2)) {\n ++matchCount;\n }\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n\n return matchCount;\n}\n/**\n * A bottom up algorithm that finds all elements with ids inside of the node\n * argument and populates id sets for those nodes and all their parents, generating\n * a set of ids contained within all nodes for the entire hierarchy in the DOM\n *\n * @param node {Element}\n * @param {Map>} idMap\n */\n\n\nfunction populateIdMapForNode(node, idMap) {\n var nodeParent = node.parentElement; // find all elements with an id property\n\n var idElements = node.querySelectorAll('[id]');\n\n var _iterator26 = _createForOfIteratorHelper(idElements),\n _step26;\n\n try {\n for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {\n var elt = _step26.value;\n var current = elt; // walk up the parent hierarchy of that element, adding the id\n // of element to the parent's id set\n\n while (current !== nodeParent && current != null) {\n var idSet = idMap.get(current); // if the id set doesn't exist, create it and insert it in the map\n\n if (idSet == null) {\n idSet = new Set();\n idMap.set(current, idSet);\n }\n\n idSet.add(elt.id);\n current = current.parentElement;\n }\n }\n } catch (err) {\n _iterator26.e(err);\n } finally {\n _iterator26.f();\n }\n}\n/**\n * This function computes a map of nodes to all ids contained within that node (inclusive of the\n * node). This map can be used to ask if two nodes have intersecting sets of ids, which allows\n * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n * to contribute to a parent nodes matching.\n *\n * @param {Element} oldContent the old content that will be morphed\n * @param {Element} newContent the new content to morph to\n * @returns {Map>} a map of nodes to id sets for the\n */\n\n\nfunction createIdMap(oldContent, newContent) {\n var idMap = new Map();\n populateIdMapForNode(oldContent, idMap);\n populateIdMapForNode(newContent, idMap);\n return idMap;\n} //=============================================================================\n// This is what ends up becoming the Idiomorph export\n//=============================================================================\n\n\nvar idiomorph = {\n morph: morph\n};\n\nvar _morphBody = /*#__PURE__*/_classPrivateFieldLooseKey(\"morphBody\");\n\nvar _morphElements = /*#__PURE__*/_classPrivateFieldLooseKey(\"morphElements\");\n\nvar _shouldAddElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldAddElement\");\n\nvar _shouldMorphElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldMorphElement\");\n\nvar _shouldRemoveElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldRemoveElement\");\n\nvar _reloadRemoteFrames = /*#__PURE__*/_classPrivateFieldLooseKey(\"reloadRemoteFrames\");\n\nvar _renderFrameWithMorph = /*#__PURE__*/_classPrivateFieldLooseKey(\"renderFrameWithMorph\");\n\nvar _morphFrameUpdate = /*#__PURE__*/_classPrivateFieldLooseKey(\"morphFrameUpdate\");\n\nvar _isFrameReloadedWithMorph = /*#__PURE__*/_classPrivateFieldLooseKey(\"isFrameReloadedWithMorph\");\n\nvar _remoteFrames = /*#__PURE__*/_classPrivateFieldLooseKey(\"remoteFrames\");\n\nvar MorphRenderer = /*#__PURE__*/function (_Renderer3) {\n _inherits(MorphRenderer, _Renderer3);\n\n var _super8 = _createSuper(MorphRenderer);\n\n function MorphRenderer() {\n var _this31;\n\n _classCallCheck(this, MorphRenderer);\n\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\n args[_key8] = arguments[_key8];\n }\n\n _this31 = _super8.call.apply(_super8, [this].concat(args));\n Object.defineProperty(_assertThisInitialized(_this31), _remoteFrames, {\n value: _remoteFrames2\n });\n Object.defineProperty(_assertThisInitialized(_this31), _isFrameReloadedWithMorph, {\n value: _isFrameReloadedWithMorph2\n });\n Object.defineProperty(_assertThisInitialized(_this31), _renderFrameWithMorph, {\n value: _renderFrameWithMorph2\n });\n Object.defineProperty(_assertThisInitialized(_this31), _reloadRemoteFrames, {\n value: _reloadRemoteFrames2\n });\n Object.defineProperty(_assertThisInitialized(_this31), _morphElements, {\n value: _morphElements2\n });\n Object.defineProperty(_assertThisInitialized(_this31), _morphBody, {\n value: _morphBody2\n });\n Object.defineProperty(_assertThisInitialized(_this31), _shouldAddElement, {\n writable: true,\n value: function value(node) {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id));\n }\n });\n Object.defineProperty(_assertThisInitialized(_this31), _shouldMorphElement, {\n writable: true,\n value: function value(oldNode, newNode) {\n if (oldNode instanceof HTMLElement) {\n return !oldNode.hasAttribute(\"data-turbo-permanent\") && (_this31.isMorphingTurboFrame || !_classPrivateFieldLooseBase(_assertThisInitialized(_this31), _isFrameReloadedWithMorph)[_isFrameReloadedWithMorph](oldNode));\n } else {\n return true;\n }\n }\n });\n Object.defineProperty(_assertThisInitialized(_this31), _shouldRemoveElement, {\n writable: true,\n value: function value(node) {\n return _classPrivateFieldLooseBase(_assertThisInitialized(_this31), _shouldMorphElement)[_shouldMorphElement](node);\n }\n });\n Object.defineProperty(_assertThisInitialized(_this31), _morphFrameUpdate, {\n writable: true,\n value: function value(currentElement, newElement) {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: {\n currentElement: currentElement,\n newElement: newElement\n }\n });\n\n _classPrivateFieldLooseBase(_assertThisInitialized(_this31), _morphElements)[_morphElements](currentElement, newElement.children, \"innerHTML\");\n }\n });\n return _this31;\n }\n\n _createClass(MorphRenderer, [{\n key: \"render\",\n value: function () {\n var _render5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24() {\n return _regeneratorRuntime.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n if (!this.willRender) {\n _context24.next = 3;\n break;\n }\n\n _context24.next = 3;\n return _classPrivateFieldLooseBase(this, _morphBody)[_morphBody]();\n\n case 3:\n case \"end\":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function render() {\n return _render5.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"renderMethod\",\n get: function get() {\n return \"morph\";\n } // Private\n\n }]);\n\n return MorphRenderer;\n}(Renderer);\n\nfunction _morphBody2() {\n return _morphBody3.apply(this, arguments);\n}\n\nfunction _morphBody3() {\n _morphBody3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee50() {\n return _regeneratorRuntime.wrap(function _callee50$(_context50) {\n while (1) {\n switch (_context50.prev = _context50.next) {\n case 0:\n _classPrivateFieldLooseBase(this, _morphElements)[_morphElements](this.currentElement, this.newElement);\n\n _classPrivateFieldLooseBase(this, _reloadRemoteFrames)[_reloadRemoteFrames]();\n\n dispatch(\"turbo:morph\", {\n detail: {\n currentElement: this.currentElement,\n newElement: this.newElement\n }\n });\n\n case 3:\n case \"end\":\n return _context50.stop();\n }\n }\n }, _callee50, this);\n }));\n return _morphBody3.apply(this, arguments);\n}\n\nfunction _morphElements2(currentElement, newElement) {\n var morphStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"outerHTML\";\n this.isMorphingTurboFrame = _classPrivateFieldLooseBase(this, _isFrameReloadedWithMorph)[_isFrameReloadedWithMorph](currentElement);\n idiomorph.morph(currentElement, newElement, {\n morphStyle: morphStyle,\n callbacks: {\n beforeNodeAdded: _classPrivateFieldLooseBase(this, _shouldAddElement)[_shouldAddElement],\n beforeNodeMorphed: _classPrivateFieldLooseBase(this, _shouldMorphElement)[_shouldMorphElement],\n beforeNodeRemoved: _classPrivateFieldLooseBase(this, _shouldRemoveElement)[_shouldRemoveElement]\n }\n });\n}\n\nfunction _reloadRemoteFrames2() {\n var _this50 = this;\n\n _classPrivateFieldLooseBase(this, _remoteFrames)[_remoteFrames]().forEach(function (frame) {\n if (_classPrivateFieldLooseBase(_this50, _isFrameReloadedWithMorph)[_isFrameReloadedWithMorph](frame)) {\n _classPrivateFieldLooseBase(_this50, _renderFrameWithMorph)[_renderFrameWithMorph](frame);\n\n frame.reload();\n }\n });\n}\n\nfunction _renderFrameWithMorph2(frame) {\n var _this51 = this;\n\n frame.addEventListener(\"turbo:before-frame-render\", function (event) {\n event.detail.render = _classPrivateFieldLooseBase(_this51, _morphFrameUpdate)[_morphFrameUpdate];\n }, {\n once: true\n });\n}\n\nfunction _isFrameReloadedWithMorph2(element) {\n return element.src && element.refresh === \"morph\";\n}\n\nfunction _remoteFrames2() {\n return Array.from(document.querySelectorAll('turbo-frame[src]')).filter(function (frame) {\n return !frame.closest('[data-turbo-permanent]');\n });\n}\n\nvar _setLanguage = /*#__PURE__*/_classPrivateFieldLooseKey(\"setLanguage\");\n\nvar PageRenderer = /*#__PURE__*/function (_Renderer4) {\n _inherits(PageRenderer, _Renderer4);\n\n var _super9 = _createSuper(PageRenderer);\n\n function PageRenderer() {\n var _this32;\n\n _classCallCheck(this, PageRenderer);\n\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\n args[_key9] = arguments[_key9];\n }\n\n _this32 = _super9.call.apply(_super9, [this].concat(args));\n Object.defineProperty(_assertThisInitialized(_this32), _setLanguage, {\n value: _setLanguage2\n });\n return _this32;\n }\n\n _createClass(PageRenderer, [{\n key: \"shouldRender\",\n get: function get() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n }\n }, {\n key: \"reloadReason\",\n get: function get() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n };\n }\n\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n };\n }\n }\n }, {\n key: \"prepareToRender\",\n value: function () {\n var _prepareToRender = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee25() {\n return _regeneratorRuntime.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n _classPrivateFieldLooseBase(this, _setLanguage)[_setLanguage]();\n\n _context25.next = 3;\n return this.mergeHead();\n\n case 3:\n case \"end\":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function prepareToRender() {\n return _prepareToRender.apply(this, arguments);\n }\n\n return prepareToRender;\n }()\n }, {\n key: \"render\",\n value: function () {\n var _render6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee26() {\n return _regeneratorRuntime.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n if (!this.willRender) {\n _context26.next = 3;\n break;\n }\n\n _context26.next = 3;\n return this.replaceBody();\n\n case 3:\n case \"end\":\n return _context26.stop();\n }\n }\n }, _callee26, this);\n }));\n\n function render() {\n return _render6.apply(this, arguments);\n }\n\n return render;\n }()\n }, {\n key: \"finishRendering\",\n value: function finishRendering() {\n _get(_getPrototypeOf(PageRenderer.prototype), \"finishRendering\", this).call(this);\n\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n }, {\n key: \"currentHeadSnapshot\",\n get: function get() {\n return this.currentSnapshot.headSnapshot;\n }\n }, {\n key: \"newHeadSnapshot\",\n get: function get() {\n return this.newSnapshot.headSnapshot;\n }\n }, {\n key: \"newElement\",\n get: function get() {\n return this.newSnapshot.element;\n }\n }, {\n key: \"mergeHead\",\n value: function () {\n var _mergeHead = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee27() {\n var mergedHeadElements, newStylesheetElements;\n return _regeneratorRuntime.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n mergedHeadElements = this.mergeProvisionalElements();\n newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n _context27.next = 5;\n return mergedHeadElements;\n\n case 5:\n _context27.next = 7;\n return newStylesheetElements;\n\n case 7:\n case \"end\":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function mergeHead() {\n return _mergeHead.apply(this, arguments);\n }\n\n return mergeHead;\n }()\n }, {\n key: \"replaceBody\",\n value: function () {\n var _replaceBody = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee29() {\n var _this33 = this;\n\n return _regeneratorRuntime.wrap(function _callee29$(_context29) {\n while (1) {\n switch (_context29.prev = _context29.next) {\n case 0:\n _context29.next = 2;\n return this.preservingPermanentElements( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee28() {\n return _regeneratorRuntime.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n _this33.activateNewBody();\n\n _context28.next = 3;\n return _this33.assignNewBody();\n\n case 3:\n case \"end\":\n return _context28.stop();\n }\n }\n }, _callee28);\n })));\n\n case 2:\n case \"end\":\n return _context29.stop();\n }\n }\n }, _callee29, this);\n }));\n\n function replaceBody() {\n return _replaceBody.apply(this, arguments);\n }\n\n return replaceBody;\n }()\n }, {\n key: \"trackedElementsAreIdentical\",\n get: function get() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n }\n }, {\n key: \"copyNewHeadStylesheetElements\",\n value: function () {\n var _copyNewHeadStylesheetElements = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee30() {\n var loadingElements, _iterator27, _step27, element;\n\n return _regeneratorRuntime.wrap(function _callee30$(_context30) {\n while (1) {\n switch (_context30.prev = _context30.next) {\n case 0:\n loadingElements = [];\n _iterator27 = _createForOfIteratorHelper(this.newHeadStylesheetElements);\n\n try {\n for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {\n element = _step27.value;\n loadingElements.push(waitForLoad(element));\n document.head.appendChild(element);\n }\n } catch (err) {\n _iterator27.e(err);\n } finally {\n _iterator27.f();\n }\n\n _context30.next = 5;\n return Promise.all(loadingElements);\n\n case 5:\n case \"end\":\n return _context30.stop();\n }\n }\n }, _callee30, this);\n }));\n\n function copyNewHeadStylesheetElements() {\n return _copyNewHeadStylesheetElements.apply(this, arguments);\n }\n\n return copyNewHeadStylesheetElements;\n }()\n }, {\n key: \"copyNewHeadScriptElements\",\n value: function copyNewHeadScriptElements() {\n var _iterator28 = _createForOfIteratorHelper(this.newHeadScriptElements),\n _step28;\n\n try {\n for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {\n var element = _step28.value;\n document.head.appendChild(activateScriptElement(element));\n }\n } catch (err) {\n _iterator28.e(err);\n } finally {\n _iterator28.f();\n }\n }\n }, {\n key: \"mergeProvisionalElements\",\n value: function () {\n var _mergeProvisionalElements = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee31() {\n var newHeadElements, _iterator29, _step29, element, _iterator30, _step30, _element3;\n\n return _regeneratorRuntime.wrap(function _callee31$(_context31) {\n while (1) {\n switch (_context31.prev = _context31.next) {\n case 0:\n newHeadElements = _toConsumableArray(this.newHeadProvisionalElements);\n _iterator29 = _createForOfIteratorHelper(this.currentHeadProvisionalElements);\n\n try {\n for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {\n element = _step29.value;\n\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n } catch (err) {\n _iterator29.e(err);\n } finally {\n _iterator29.f();\n }\n\n _iterator30 = _createForOfIteratorHelper(newHeadElements);\n\n try {\n for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {\n _element3 = _step30.value;\n document.head.appendChild(_element3);\n }\n } catch (err) {\n _iterator30.e(err);\n } finally {\n _iterator30.f();\n }\n\n case 5:\n case \"end\":\n return _context31.stop();\n }\n }\n }, _callee31, this);\n }));\n\n function mergeProvisionalElements() {\n return _mergeProvisionalElements.apply(this, arguments);\n }\n\n return mergeProvisionalElements;\n }()\n }, {\n key: \"isCurrentElementInElementList\",\n value: function isCurrentElementInElementList(element, elementList) {\n var _iterator31 = _createForOfIteratorHelper(elementList.entries()),\n _step31;\n\n try {\n for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {\n var _ref28 = _step31.value;\n\n var _ref27 = _slicedToArray(_ref28, 2);\n\n var index = _ref27[0];\n var newElement = _ref27[1];\n\n // if title element...\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue;\n }\n\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true;\n }\n } // if any other element...\n\n\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true;\n }\n }\n } catch (err) {\n _iterator31.e(err);\n } finally {\n _iterator31.f();\n }\n\n return false;\n }\n }, {\n key: \"removeCurrentHeadProvisionalElements\",\n value: function removeCurrentHeadProvisionalElements() {\n var _iterator32 = _createForOfIteratorHelper(this.currentHeadProvisionalElements),\n _step32;\n\n try {\n for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {\n var element = _step32.value;\n document.head.removeChild(element);\n }\n } catch (err) {\n _iterator32.e(err);\n } finally {\n _iterator32.f();\n }\n }\n }, {\n key: \"copyNewHeadProvisionalElements\",\n value: function copyNewHeadProvisionalElements() {\n var _iterator33 = _createForOfIteratorHelper(this.newHeadProvisionalElements),\n _step33;\n\n try {\n for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {\n var element = _step33.value;\n document.head.appendChild(element);\n }\n } catch (err) {\n _iterator33.e(err);\n } finally {\n _iterator33.f();\n }\n }\n }, {\n key: \"activateNewBody\",\n value: function activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n }, {\n key: \"activateNewBodyScriptElements\",\n value: function activateNewBodyScriptElements() {\n var _iterator34 = _createForOfIteratorHelper(this.newBodyScriptElements),\n _step34;\n\n try {\n for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {\n var inertScriptElement = _step34.value;\n var activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n } catch (err) {\n _iterator34.e(err);\n } finally {\n _iterator34.f();\n }\n }\n }, {\n key: \"assignNewBody\",\n value: function () {\n var _assignNewBody = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee32() {\n return _regeneratorRuntime.wrap(function _callee32$(_context32) {\n while (1) {\n switch (_context32.prev = _context32.next) {\n case 0:\n _context32.next = 2;\n return this.renderElement(this.currentElement, this.newElement);\n\n case 2:\n case \"end\":\n return _context32.stop();\n }\n }\n }, _callee32, this);\n }));\n\n function assignNewBody() {\n return _assignNewBody.apply(this, arguments);\n }\n\n return assignNewBody;\n }()\n }, {\n key: \"newHeadStylesheetElements\",\n get: function get() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n }, {\n key: \"newHeadScriptElements\",\n get: function get() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n }\n }, {\n key: \"currentHeadProvisionalElements\",\n get: function get() {\n return this.currentHeadSnapshot.provisionalElements;\n }\n }, {\n key: \"newHeadProvisionalElements\",\n get: function get() {\n return this.newHeadSnapshot.provisionalElements;\n }\n }, {\n key: \"newBodyScriptElements\",\n get: function get() {\n return this.newElement.querySelectorAll(\"script\");\n }\n }], [{\n key: \"renderElement\",\n value: function renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n } else {\n document.documentElement.appendChild(newElement);\n }\n }\n }]);\n\n return PageRenderer;\n}(Renderer);\n\nfunction _setLanguage2() {\n var documentElement = this.currentSnapshot.documentElement;\n var lang = this.newSnapshot.lang;\n\n if (lang) {\n documentElement.setAttribute(\"lang\", lang);\n } else {\n documentElement.removeAttribute(\"lang\");\n }\n}\n\nvar SnapshotCache = /*#__PURE__*/function () {\n function SnapshotCache(size) {\n _classCallCheck(this, SnapshotCache);\n\n this.keys = [];\n this.snapshots = {};\n this.size = size;\n }\n\n _createClass(SnapshotCache, [{\n key: \"has\",\n value: function has(location) {\n return toCacheKey(location) in this.snapshots;\n }\n }, {\n key: \"get\",\n value: function get(location) {\n if (this.has(location)) {\n var snapshot = this.read(location);\n this.touch(location);\n return snapshot;\n }\n }\n }, {\n key: \"put\",\n value: function put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.snapshots = {};\n } // Private\n\n }, {\n key: \"read\",\n value: function read(location) {\n return this.snapshots[toCacheKey(location)];\n }\n }, {\n key: \"write\",\n value: function write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n }, {\n key: \"touch\",\n value: function touch(location) {\n var key = toCacheKey(location);\n var index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n }, {\n key: \"trim\",\n value: function trim() {\n var _iterator35 = _createForOfIteratorHelper(this.keys.splice(this.size)),\n _step35;\n\n try {\n for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {\n var key = _step35.value;\n delete this.snapshots[key];\n }\n } catch (err) {\n _iterator35.e(err);\n } finally {\n _iterator35.f();\n }\n }\n }]);\n\n return SnapshotCache;\n}();\n\nvar PageView = /*#__PURE__*/function (_View2) {\n _inherits(PageView, _View2);\n\n var _super10 = _createSuper(PageView);\n\n function PageView() {\n var _this34;\n\n _classCallCheck(this, PageView);\n\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\n args[_key10] = arguments[_key10];\n }\n\n _this34 = _super10.call.apply(_super10, [this].concat(args));\n _this34.snapshotCache = new SnapshotCache(10);\n _this34.lastRenderedLocation = new URL(location.href);\n _this34.forceReloaded = false;\n return _this34;\n }\n\n _createClass(PageView, [{\n key: \"shouldTransitionTo\",\n value: function shouldTransitionTo(newSnapshot) {\n return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions;\n }\n }, {\n key: \"renderPage\",\n value: function renderPage(snapshot) {\n var isPreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var willRender = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var visit = arguments.length > 3 ? arguments[3] : undefined;\n var shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n var rendererClass = shouldMorphPage ? MorphRenderer : PageRenderer;\n var renderer = new rendererClass(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n }\n\n return this.render(renderer);\n }\n }, {\n key: \"renderError\",\n value: function renderError(snapshot, visit) {\n visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n var renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer);\n }\n }, {\n key: \"clearSnapshotCache\",\n value: function clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n }, {\n key: \"cacheSnapshot\",\n value: function () {\n var _cacheSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee33() {\n var snapshot,\n _location3,\n cachedSnapshot,\n _args33 = arguments;\n\n return _regeneratorRuntime.wrap(function _callee33$(_context33) {\n while (1) {\n switch (_context33.prev = _context33.next) {\n case 0:\n snapshot = _args33.length > 0 && _args33[0] !== undefined ? _args33[0] : this.snapshot;\n\n if (!snapshot.isCacheable) {\n _context33.next = 9;\n break;\n }\n\n this.delegate.viewWillCacheSnapshot();\n _location3 = this.lastRenderedLocation;\n _context33.next = 6;\n return nextEventLoopTick();\n\n case 6:\n cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(_location3, cachedSnapshot);\n return _context33.abrupt(\"return\", cachedSnapshot);\n\n case 9:\n case \"end\":\n return _context33.stop();\n }\n }\n }, _callee33, this);\n }));\n\n function cacheSnapshot() {\n return _cacheSnapshot.apply(this, arguments);\n }\n\n return cacheSnapshot;\n }()\n }, {\n key: \"getCachedSnapshotForLocation\",\n value: function getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location);\n }\n }, {\n key: \"isPageRefresh\",\n value: function isPageRefresh(visit) {\n return !visit || this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\";\n }\n }, {\n key: \"shouldPreserveScrollPosition\",\n value: function shouldPreserveScrollPosition(visit) {\n return this.isPageRefresh(visit) && this.snapshot.shouldPreserveScrollPosition;\n }\n }, {\n key: \"snapshot\",\n get: function get() {\n return PageSnapshot.fromElement(this.element);\n }\n }]);\n\n return PageView;\n}(View);\n\nvar _preloadAll = /*#__PURE__*/_classPrivateFieldLooseKey(\"preloadAll\");\n\nvar Preloader = /*#__PURE__*/function () {\n function Preloader(delegate, snapshotCache) {\n var _this35 = this;\n\n _classCallCheck(this, Preloader);\n\n this.selector = \"a[data-turbo-preload]\";\n Object.defineProperty(this, _preloadAll, {\n writable: true,\n value: function value() {\n _this35.preloadOnLoadLinksForView(document.body);\n }\n });\n this.delegate = delegate;\n this.snapshotCache = snapshotCache;\n }\n\n _createClass(Preloader, [{\n key: \"start\",\n value: function start() {\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", _classPrivateFieldLooseBase(this, _preloadAll)[_preloadAll]);\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n }, {\n key: \"stop\",\n value: function stop() {\n document.removeEventListener(\"DOMContentLoaded\", _classPrivateFieldLooseBase(this, _preloadAll)[_preloadAll]);\n }\n }, {\n key: \"preloadOnLoadLinksForView\",\n value: function preloadOnLoadLinksForView(element) {\n var _iterator36 = _createForOfIteratorHelper(element.querySelectorAll(this.selector)),\n _step36;\n\n try {\n for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {\n var link = _step36.value;\n\n if (this.delegate.shouldPreloadLink(link)) {\n this.preloadURL(link);\n }\n }\n } catch (err) {\n _iterator36.e(err);\n } finally {\n _iterator36.f();\n }\n }\n }, {\n key: \"preloadURL\",\n value: function () {\n var _preloadURL = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee34(link) {\n var location, fetchRequest;\n return _regeneratorRuntime.wrap(function _callee34$(_context34) {\n while (1) {\n switch (_context34.prev = _context34.next) {\n case 0:\n location = new URL(link.href);\n\n if (!this.snapshotCache.has(location)) {\n _context34.next = 3;\n break;\n }\n\n return _context34.abrupt(\"return\");\n\n case 3:\n fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n _context34.next = 6;\n return fetchRequest.perform();\n\n case 6:\n case \"end\":\n return _context34.stop();\n }\n }\n }, _callee34, this);\n }));\n\n function preloadURL(_x27) {\n return _preloadURL.apply(this, arguments);\n }\n\n return preloadURL;\n }() // Fetch request delegate\n\n }, {\n key: \"prepareRequest\",\n value: function prepareRequest(fetchRequest) {\n fetchRequest.headers[\"Sec-Purpose\"] = \"prefetch\";\n }\n }, {\n key: \"requestSucceededWithResponse\",\n value: function () {\n var _requestSucceededWithResponse2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee35(fetchRequest, fetchResponse) {\n var responseHTML, snapshot;\n return _regeneratorRuntime.wrap(function _callee35$(_context35) {\n while (1) {\n switch (_context35.prev = _context35.next) {\n case 0:\n _context35.prev = 0;\n _context35.next = 3;\n return fetchResponse.responseHTML;\n\n case 3:\n responseHTML = _context35.sent;\n snapshot = PageSnapshot.fromHTMLString(responseHTML);\n this.snapshotCache.put(fetchRequest.url, snapshot);\n _context35.next = 10;\n break;\n\n case 8:\n _context35.prev = 8;\n _context35.t0 = _context35[\"catch\"](0);\n\n case 10:\n case \"end\":\n return _context35.stop();\n }\n }\n }, _callee35, this, [[0, 8]]);\n }));\n\n function requestSucceededWithResponse(_x28, _x29) {\n return _requestSucceededWithResponse2.apply(this, arguments);\n }\n\n return requestSucceededWithResponse;\n }()\n }, {\n key: \"requestStarted\",\n value: function requestStarted(fetchRequest) {}\n }, {\n key: \"requestErrored\",\n value: function requestErrored(fetchRequest) {}\n }, {\n key: \"requestFinished\",\n value: function requestFinished(fetchRequest) {}\n }, {\n key: \"requestPreventedHandlingResponse\",\n value: function requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n }, {\n key: \"requestFailedWithResponse\",\n value: function requestFailedWithResponse(fetchRequest, fetchResponse) {}\n }]);\n\n return Preloader;\n}();\n\nvar _setCacheControl = /*#__PURE__*/_classPrivateFieldLooseKey(\"setCacheControl\");\n\nvar Cache = /*#__PURE__*/function () {\n function Cache(session) {\n _classCallCheck(this, Cache);\n\n Object.defineProperty(this, _setCacheControl, {\n value: _setCacheControl2\n });\n this.session = session;\n }\n\n _createClass(Cache, [{\n key: \"clear\",\n value: function clear() {\n this.session.clearCache();\n }\n }, {\n key: \"resetCacheControl\",\n value: function resetCacheControl() {\n _classPrivateFieldLooseBase(this, _setCacheControl)[_setCacheControl](\"\");\n }\n }, {\n key: \"exemptPageFromCache\",\n value: function exemptPageFromCache() {\n _classPrivateFieldLooseBase(this, _setCacheControl)[_setCacheControl](\"no-cache\");\n }\n }, {\n key: \"exemptPageFromPreview\",\n value: function exemptPageFromPreview() {\n _classPrivateFieldLooseBase(this, _setCacheControl)[_setCacheControl](\"no-preview\");\n }\n }]);\n\n return Cache;\n}();\n\nfunction _setCacheControl2(value) {\n setMetaContent(\"turbo-cache-control\", value);\n}\n\nvar Session = /*#__PURE__*/function () {\n function Session(recentRequests) {\n _classCallCheck(this, Session);\n\n this.navigator = new Navigator(this);\n this.history = new History(this);\n this.view = new PageView(this, document.documentElement);\n this.adapter = new BrowserAdapter(this);\n this.pageObserver = new PageObserver(this);\n this.cacheObserver = new CacheObserver();\n this.linkClickObserver = new LinkClickObserver(this, window);\n this.formSubmitObserver = new FormSubmitObserver(this, document);\n this.scrollObserver = new ScrollObserver(this);\n this.streamObserver = new StreamObserver(this);\n this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n this.frameRedirector = new FrameRedirector(this, document.documentElement);\n this.streamMessageRenderer = new StreamMessageRenderer();\n this.cache = new Cache(this);\n this.drive = true;\n this.enabled = true;\n this.progressBarDelay = 500;\n this.started = false;\n this.formMode = \"on\";\n this.recentRequests = recentRequests;\n this.preloader = new Preloader(this, this.view.snapshotCache);\n }\n\n _createClass(Session, [{\n key: \"start\",\n value: function start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n }, {\n key: \"disable\",\n value: function disable() {\n this.enabled = false;\n }\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.preloader.stop();\n this.started = false;\n }\n }\n }, {\n key: \"registerAdapter\",\n value: function registerAdapter(adapter) {\n this.adapter = adapter;\n }\n }, {\n key: \"visit\",\n value: function visit(location) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n if (frameElement instanceof FrameElement) {\n frameElement.src = location.toString();\n frameElement.loaded;\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n }, {\n key: \"refresh\",\n value: function refresh(url, requestId) {\n var isRecentRequest = requestId && this.recentRequests.has(requestId);\n\n if (!isRecentRequest) {\n this.cache.exemptPageFromPreview();\n this.visit(url, {\n action: \"replace\"\n });\n }\n }\n }, {\n key: \"connectStreamSource\",\n value: function connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n }, {\n key: \"disconnectStreamSource\",\n value: function disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n }, {\n key: \"renderStreamMessage\",\n value: function renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n }, {\n key: \"clearCache\",\n value: function clearCache() {\n this.view.clearSnapshotCache();\n }\n }, {\n key: \"setProgressBarDelay\",\n value: function setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n }, {\n key: \"setFormMode\",\n value: function setFormMode(mode) {\n this.formMode = mode;\n }\n }, {\n key: \"location\",\n get: function get() {\n return this.history.location;\n }\n }, {\n key: \"restorationIdentifier\",\n get: function get() {\n return this.history.restorationIdentifier;\n } // Preloader delegate\n\n }, {\n key: \"shouldPreloadLink\",\n value: function shouldPreloadLink(element) {\n var isUnsafe = element.hasAttribute(\"data-turbo-method\");\n var isStream = element.hasAttribute(\"data-turbo-stream\");\n var frameTarget = element.getAttribute(\"data-turbo-frame\");\n var frame = frameTarget == \"_top\" ? null : document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n if (isUnsafe || isStream || frame instanceof FrameElement) {\n return false;\n } else {\n var _location4 = new URL(element.href);\n\n return this.elementIsNavigatable(element) && locationIsVisitable(_location4, this.snapshot.rootLocation);\n }\n } // History delegate\n\n }, {\n key: \"historyPoppedToLocationWithRestorationIdentifierAndDirection\",\n value: function historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n direction: direction\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n } // Scroll observer delegate\n\n }, {\n key: \"scrollPositionChanged\",\n value: function scrollPositionChanged(position) {\n this.history.updateRestorationData({\n scrollPosition: position\n });\n } // Form click observer delegate\n\n }, {\n key: \"willSubmitFormLinkToLocation\",\n value: function willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n }\n }, {\n key: \"submittedFormLinkToLocation\",\n value: function submittedFormLinkToLocation() {} // Link click observer delegate\n\n }, {\n key: \"willFollowLinkToLocation\",\n value: function willFollowLinkToLocation(link, location, event) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location, event);\n }\n }, {\n key: \"followedLinkToLocation\",\n value: function followedLinkToLocation(link, location) {\n var action = this.getActionForLink(link);\n var acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n this.visit(location.href, {\n action: action,\n acceptsStreamResponse: acceptsStreamResponse\n });\n } // Navigator delegate\n\n }, {\n key: \"allowsVisitingLocationWithAction\",\n value: function allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n }\n }, {\n key: \"visitProposedToLocation\",\n value: function visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n } // Visit delegate\n\n }, {\n key: \"visitStarted\",\n value: function visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n this.view.markVisitDirection(visit.direction);\n }\n\n extendURLWithDeprecatedProperties(visit.location);\n\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n }, {\n key: \"visitCompleted\",\n value: function visitCompleted(visit) {\n this.view.unmarkVisitDirection();\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n }, {\n key: \"locationWithActionIsSamePage\",\n value: function locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action);\n }\n }, {\n key: \"visitScrolledToSamePageLocation\",\n value: function visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n } // Form submit observer delegate\n\n }, {\n key: \"willSubmitForm\",\n value: function willSubmitForm(form, submitter) {\n var action = getAction$1(form, submitter);\n return this.submissionIsNavigatable(form, submitter) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation);\n }\n }, {\n key: \"formSubmitted\",\n value: function formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n } // Page observer delegate\n\n }, {\n key: \"pageBecameInteractive\",\n value: function pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n }, {\n key: \"pageLoaded\",\n value: function pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n }, {\n key: \"pageWillUnload\",\n value: function pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n } // Stream observer delegate\n\n }, {\n key: \"receivedMessageFromStream\",\n value: function receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n } // Page view delegate\n\n }, {\n key: \"viewWillCacheSnapshot\",\n value: function viewWillCacheSnapshot() {\n var _this$navigator$curre;\n\n if (!((_this$navigator$curre = this.navigator.currentVisit) !== null && _this$navigator$curre !== void 0 && _this$navigator$curre.silent)) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n }, {\n key: \"allowsImmediateRender\",\n value: function allowsImmediateRender(_ref29, isPreview, options) {\n var element = _ref29.element;\n var event = this.notifyApplicationBeforeRender(element, isPreview, options);\n var defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented;\n }\n }, {\n key: \"viewRenderedSnapshot\",\n value: function viewRenderedSnapshot(_snapshot, isPreview, renderMethod) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender(isPreview, renderMethod);\n }\n }, {\n key: \"preloadOnLoadLinksForView\",\n value: function preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n }, {\n key: \"viewInvalidated\",\n value: function viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n } // Frame element\n\n }, {\n key: \"frameLoaded\",\n value: function frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n }, {\n key: \"frameRendered\",\n value: function frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n } // Application events\n\n }, {\n key: \"applicationAllowsFollowingLinkToLocation\",\n value: function applicationAllowsFollowingLinkToLocation(link, location, ev) {\n var event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented;\n }\n }, {\n key: \"applicationAllowsVisitingLocation\",\n value: function applicationAllowsVisitingLocation(location) {\n var event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented;\n }\n }, {\n key: \"notifyApplicationAfterClickingLinkToLocation\",\n value: function notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: {\n url: location.href,\n originalEvent: event\n },\n cancelable: true\n });\n }\n }, {\n key: \"notifyApplicationBeforeVisitingLocation\",\n value: function notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: {\n url: location.href\n },\n cancelable: true\n });\n }\n }, {\n key: \"notifyApplicationAfterVisitingLocation\",\n value: function notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", {\n detail: {\n url: location.href,\n action: action\n }\n });\n }\n }, {\n key: \"notifyApplicationBeforeCachingSnapshot\",\n value: function notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\");\n }\n }, {\n key: \"notifyApplicationBeforeRender\",\n value: function notifyApplicationBeforeRender(newBody, isPreview, options) {\n return dispatch(\"turbo:before-render\", {\n detail: _objectSpread({\n newBody: newBody,\n isPreview: isPreview\n }, options),\n cancelable: true\n });\n }\n }, {\n key: \"notifyApplicationAfterRender\",\n value: function notifyApplicationAfterRender(isPreview, renderMethod) {\n return dispatch(\"turbo:render\", {\n detail: {\n isPreview: isPreview,\n renderMethod: renderMethod\n }\n });\n }\n }, {\n key: \"notifyApplicationAfterPageLoad\",\n value: function notifyApplicationAfterPageLoad() {\n var timing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return dispatch(\"turbo:load\", {\n detail: {\n url: this.location.href,\n timing: timing\n }\n });\n }\n }, {\n key: \"notifyApplicationAfterVisitingSamePageLocation\",\n value: function notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n }));\n }\n }, {\n key: \"notifyApplicationAfterFrameLoad\",\n value: function notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", {\n target: frame\n });\n }\n }, {\n key: \"notifyApplicationAfterFrameRender\",\n value: function notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: {\n fetchResponse: fetchResponse\n },\n target: frame,\n cancelable: true\n });\n } // Helpers\n\n }, {\n key: \"submissionIsNavigatable\",\n value: function submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false;\n } else {\n var submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form);\n }\n }\n }\n }, {\n key: \"elementIsNavigatable\",\n value: function elementIsNavigatable(element) {\n var container = findClosestRecursively(element, \"[data-turbo]\");\n var withinFrame = findClosestRecursively(element, \"turbo-frame\"); // Check if Drive is enabled on the session or we're within a Frame.\n\n if (this.drive || withinFrame) {\n // Element is navigatable by default, unless `data-turbo=\"false\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\";\n } else {\n return true;\n }\n } else {\n // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\";\n } else {\n return false;\n }\n }\n } // Private\n\n }, {\n key: \"getActionForLink\",\n value: function getActionForLink(link) {\n return getVisitAction(link) || \"advance\";\n }\n }, {\n key: \"snapshot\",\n get: function get() {\n return this.view.snapshot;\n }\n }]);\n\n return Session;\n}(); // Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nvar deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get: function get() {\n return this.toString();\n }\n }\n};\nvar session = new Session(recentRequests);\nvar cache = session.cache,\n navigator$1 = session.navigator;\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\n\nfunction start() {\n session.start();\n}\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\n\n\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\n\n\nfunction visit(location, options) {\n session.visit(location, options);\n}\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\n\n\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\n\n\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\n\n\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\n\n\nfunction clearCache() {\n console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n session.clearCache();\n}\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\n\n\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\n\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n fetch: fetchWithTurboHeaders,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode\n});\n\nvar TurboFrameMissingError = /*#__PURE__*/function (_Error) {\n _inherits(TurboFrameMissingError, _Error);\n\n var _super11 = _createSuper(TurboFrameMissingError);\n\n function TurboFrameMissingError() {\n _classCallCheck(this, TurboFrameMissingError);\n\n return _super11.apply(this, arguments);\n }\n\n return _createClass(TurboFrameMissingError);\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nvar _currentFetchRequest = /*#__PURE__*/_classPrivateFieldLooseKey(\"currentFetchRequest\");\n\nvar _resolveVisitPromise = /*#__PURE__*/_classPrivateFieldLooseKey(\"resolveVisitPromise\");\n\nvar _connected = /*#__PURE__*/_classPrivateFieldLooseKey(\"connected\");\n\nvar _hasBeenLoaded = /*#__PURE__*/_classPrivateFieldLooseKey(\"hasBeenLoaded\");\n\nvar _ignoredAttributes = /*#__PURE__*/_classPrivateFieldLooseKey(\"ignoredAttributes\");\n\nvar _loadSourceURL = /*#__PURE__*/_classPrivateFieldLooseKey(\"loadSourceURL\");\n\nvar _loadFrameResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"loadFrameResponse\");\n\nvar _visit2 = /*#__PURE__*/_classPrivateFieldLooseKey(\"visit\");\n\nvar _navigateFrame = /*#__PURE__*/_classPrivateFieldLooseKey(\"navigateFrame\");\n\nvar _handleUnvisitableFrameResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleUnvisitableFrameResponse\");\n\nvar _willHandleFrameMissingFromResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"willHandleFrameMissingFromResponse\");\n\nvar _handleFrameMissingFromResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"handleFrameMissingFromResponse\");\n\nvar _throwFrameMissingError = /*#__PURE__*/_classPrivateFieldLooseKey(\"throwFrameMissingError\");\n\nvar _visitResponse = /*#__PURE__*/_classPrivateFieldLooseKey(\"visitResponse\");\n\nvar _findFrameElement3 = /*#__PURE__*/_classPrivateFieldLooseKey(\"findFrameElement\");\n\nvar _formActionIsVisitable = /*#__PURE__*/_classPrivateFieldLooseKey(\"formActionIsVisitable\");\n\nvar _shouldInterceptNavigation = /*#__PURE__*/_classPrivateFieldLooseKey(\"shouldInterceptNavigation\");\n\nvar _isIgnoringChangesTo = /*#__PURE__*/_classPrivateFieldLooseKey(\"isIgnoringChangesTo\");\n\nvar _ignoringChangesToAttribute = /*#__PURE__*/_classPrivateFieldLooseKey(\"ignoringChangesToAttribute\");\n\nvar _withCurrentNavigationElement = /*#__PURE__*/_classPrivateFieldLooseKey(\"withCurrentNavigationElement\");\n\nvar FrameController = /*#__PURE__*/function () {\n function FrameController(_element4) {\n var _this36 = this;\n\n _classCallCheck(this, FrameController);\n\n Object.defineProperty(this, _withCurrentNavigationElement, {\n value: _withCurrentNavigationElement2\n });\n Object.defineProperty(this, _ignoringChangesToAttribute, {\n value: _ignoringChangesToAttribute2\n });\n Object.defineProperty(this, _isIgnoringChangesTo, {\n value: _isIgnoringChangesTo2\n });\n Object.defineProperty(this, _shouldInterceptNavigation, {\n value: _shouldInterceptNavigation2\n });\n Object.defineProperty(this, _formActionIsVisitable, {\n value: _formActionIsVisitable2\n });\n Object.defineProperty(this, _findFrameElement3, {\n value: _findFrameElement4\n });\n Object.defineProperty(this, _visitResponse, {\n value: _visitResponse2\n });\n Object.defineProperty(this, _throwFrameMissingError, {\n value: _throwFrameMissingError2\n });\n Object.defineProperty(this, _handleFrameMissingFromResponse, {\n value: _handleFrameMissingFromResponse2\n });\n Object.defineProperty(this, _willHandleFrameMissingFromResponse, {\n value: _willHandleFrameMissingFromResponse2\n });\n Object.defineProperty(this, _handleUnvisitableFrameResponse, {\n value: _handleUnvisitableFrameResponse2\n });\n Object.defineProperty(this, _navigateFrame, {\n value: _navigateFrame2\n });\n Object.defineProperty(this, _visit2, {\n value: _visit3\n });\n Object.defineProperty(this, _loadFrameResponse, {\n value: _loadFrameResponse2\n });\n Object.defineProperty(this, _loadSourceURL, {\n value: _loadSourceURL2\n });\n\n this.fetchResponseLoaded = function (_fetchResponse) {\n return Promise.resolve();\n };\n\n Object.defineProperty(this, _currentFetchRequest, {\n writable: true,\n value: null\n });\n Object.defineProperty(this, _resolveVisitPromise, {\n writable: true,\n value: function value() {}\n });\n Object.defineProperty(this, _connected, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _hasBeenLoaded, {\n writable: true,\n value: false\n });\n Object.defineProperty(this, _ignoredAttributes, {\n writable: true,\n value: new Set()\n });\n this.action = null;\n\n this.visitCachedSnapshot = function (_ref30) {\n var element = _ref30.element;\n var frame = element.querySelector(\"#\" + _this36.element.id);\n\n if (frame && _this36.previousFrameElement) {\n frame.replaceChildren.apply(frame, _toConsumableArray(_this36.previousFrameElement.children));\n }\n\n delete _this36.previousFrameElement;\n };\n\n this.element = _element4;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n } // Frame delegate\n\n\n _createClass(FrameController, [{\n key: \"connect\",\n value: function connect() {\n if (!_classPrivateFieldLooseBase(this, _connected)[_connected]) {\n _classPrivateFieldLooseBase(this, _connected)[_connected] = true;\n\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n if (_classPrivateFieldLooseBase(this, _connected)[_connected]) {\n _classPrivateFieldLooseBase(this, _connected)[_connected] = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n }, {\n key: \"disabledChanged\",\n value: function disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n }\n }, {\n key: \"sourceURLChanged\",\n value: function sourceURLChanged() {\n if (_classPrivateFieldLooseBase(this, _isIgnoringChangesTo)[_isIgnoringChangesTo](\"src\")) return;\n\n if (this.element.isConnected) {\n this.complete = false;\n }\n\n if (this.loadingStyle == FrameLoadingStyle.eager || _classPrivateFieldLooseBase(this, _hasBeenLoaded)[_hasBeenLoaded]) {\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n }\n }, {\n key: \"sourceURLReloaded\",\n value: function sourceURLReloaded() {\n var _this37 = this;\n\n var src = this.element.src;\n\n _classPrivateFieldLooseBase(this, _ignoringChangesToAttribute)[_ignoringChangesToAttribute](\"complete\", function () {\n _this37.element.removeAttribute(\"complete\");\n });\n\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded;\n }\n }, {\n key: \"completeChanged\",\n value: function completeChanged() {\n if (_classPrivateFieldLooseBase(this, _isIgnoringChangesTo)[_isIgnoringChangesTo](\"complete\")) return;\n\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n }, {\n key: \"loadingStyleChanged\",\n value: function loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n }\n }\n }, {\n key: \"loadResponse\",\n value: function () {\n var _loadResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee36(fetchResponse) {\n var html, _document3, pageSnapshot;\n\n return _regeneratorRuntime.wrap(function _callee36$(_context36) {\n while (1) {\n switch (_context36.prev = _context36.next) {\n case 0:\n if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) {\n this.sourceURL = fetchResponse.response.url;\n }\n\n _context36.prev = 1;\n _context36.next = 4;\n return fetchResponse.responseHTML;\n\n case 4:\n html = _context36.sent;\n\n if (!html) {\n _context36.next = 15;\n break;\n }\n\n _document3 = parseHTMLDocument(html);\n pageSnapshot = PageSnapshot.fromDocument(_document3);\n\n if (!pageSnapshot.isVisitable) {\n _context36.next = 13;\n break;\n }\n\n _context36.next = 11;\n return _classPrivateFieldLooseBase(this, _loadFrameResponse)[_loadFrameResponse](fetchResponse, _document3);\n\n case 11:\n _context36.next = 15;\n break;\n\n case 13:\n _context36.next = 15;\n return _classPrivateFieldLooseBase(this, _handleUnvisitableFrameResponse)[_handleUnvisitableFrameResponse](fetchResponse);\n\n case 15:\n _context36.prev = 15;\n\n this.fetchResponseLoaded = function () {\n return Promise.resolve();\n };\n\n return _context36.finish(15);\n\n case 18:\n case \"end\":\n return _context36.stop();\n }\n }\n }, _callee36, this, [[1,, 15, 18]]);\n }));\n\n function loadResponse(_x30) {\n return _loadResponse.apply(this, arguments);\n }\n\n return loadResponse;\n }() // Appearance observer delegate\n\n }, {\n key: \"elementAppearedInViewport\",\n value: function elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, element);\n\n _classPrivateFieldLooseBase(this, _loadSourceURL)[_loadSourceURL]();\n } // Form link click observer delegate\n\n }, {\n key: \"willSubmitFormLinkToLocation\",\n value: function willSubmitFormLinkToLocation(link) {\n return _classPrivateFieldLooseBase(this, _shouldInterceptNavigation)[_shouldInterceptNavigation](link);\n }\n }, {\n key: \"submittedFormLinkToLocation\",\n value: function submittedFormLinkToLocation(link, _location, form) {\n var frame = _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](link);\n\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n } // Link interceptor delegate\n\n }, {\n key: \"shouldInterceptLinkClick\",\n value: function shouldInterceptLinkClick(element, _location, _event) {\n return _classPrivateFieldLooseBase(this, _shouldInterceptNavigation)[_shouldInterceptNavigation](element);\n }\n }, {\n key: \"linkClickIntercepted\",\n value: function linkClickIntercepted(element, location) {\n _classPrivateFieldLooseBase(this, _navigateFrame)[_navigateFrame](element, location);\n } // Form submit observer delegate\n\n }, {\n key: \"willSubmitForm\",\n value: function willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && _classPrivateFieldLooseBase(this, _shouldInterceptNavigation)[_shouldInterceptNavigation](element, submitter);\n }\n }, {\n key: \"formSubmitted\",\n value: function formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n\n this.formSubmission = new FormSubmission(this, element, submitter);\n var fetchRequest = this.formSubmission.fetchRequest;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n } // Fetch request delegate\n\n }, {\n key: \"prepareRequest\",\n value: function prepareRequest(request) {\n var _this$currentNavigati;\n\n request.headers[\"Turbo-Frame\"] = this.id;\n\n if ((_this$currentNavigati = this.currentNavigationElement) !== null && _this$currentNavigati !== void 0 && _this$currentNavigati.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n }, {\n key: \"requestStarted\",\n value: function requestStarted(_request) {\n markAsBusy(this.element);\n }\n }, {\n key: \"requestPreventedHandlingResponse\",\n value: function requestPreventedHandlingResponse(_request, _response) {\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n }\n }, {\n key: \"requestSucceededWithResponse\",\n value: function () {\n var _requestSucceededWithResponse3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee37(request, response) {\n return _regeneratorRuntime.wrap(function _callee37$(_context37) {\n while (1) {\n switch (_context37.prev = _context37.next) {\n case 0:\n _context37.next = 2;\n return this.loadResponse(response);\n\n case 2:\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n\n case 3:\n case \"end\":\n return _context37.stop();\n }\n }\n }, _callee37, this);\n }));\n\n function requestSucceededWithResponse(_x31, _x32) {\n return _requestSucceededWithResponse3.apply(this, arguments);\n }\n\n return requestSucceededWithResponse;\n }()\n }, {\n key: \"requestFailedWithResponse\",\n value: function () {\n var _requestFailedWithResponse2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee38(request, response) {\n return _regeneratorRuntime.wrap(function _callee38$(_context38) {\n while (1) {\n switch (_context38.prev = _context38.next) {\n case 0:\n _context38.next = 2;\n return this.loadResponse(response);\n\n case 2:\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n\n case 3:\n case \"end\":\n return _context38.stop();\n }\n }\n }, _callee38, this);\n }));\n\n function requestFailedWithResponse(_x33, _x34) {\n return _requestFailedWithResponse2.apply(this, arguments);\n }\n\n return requestFailedWithResponse;\n }()\n }, {\n key: \"requestErrored\",\n value: function requestErrored(request, error) {\n console.error(error);\n\n _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]();\n }\n }, {\n key: \"requestFinished\",\n value: function requestFinished(_request) {\n clearBusyState(this.element);\n } // Form submission delegate\n\n }, {\n key: \"formSubmissionStarted\",\n value: function formSubmissionStarted(_ref31) {\n var formElement = _ref31.formElement;\n markAsBusy(formElement, _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](formElement));\n }\n }, {\n key: \"formSubmissionSucceededWithResponse\",\n value: function formSubmissionSucceededWithResponse(formSubmission, response) {\n var frame = _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](formSubmission.formElement, formSubmission.submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n frame.delegate.loadResponse(response);\n\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n }, {\n key: \"formSubmissionFailedWithResponse\",\n value: function formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n }, {\n key: \"formSubmissionErrored\",\n value: function formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n }, {\n key: \"formSubmissionFinished\",\n value: function formSubmissionFinished(_ref32) {\n var formElement = _ref32.formElement;\n clearBusyState(formElement, _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](formElement));\n } // View delegate\n\n }, {\n key: \"allowsImmediateRender\",\n value: function allowsImmediateRender(_ref33, _isPreview, options) {\n var newFrame = _ref33.element;\n var event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: _objectSpread({\n newFrame: newFrame\n }, options),\n cancelable: true\n });\n var defaultPrevented = event.defaultPrevented,\n render = event.detail.render;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented;\n }\n }, {\n key: \"viewRenderedSnapshot\",\n value: function viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n }, {\n key: \"preloadOnLoadLinksForView\",\n value: function preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n }, {\n key: \"viewInvalidated\",\n value: function viewInvalidated() {} // Frame renderer delegate\n\n }, {\n key: \"willRenderFrame\",\n value: function willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n }, {\n key: \"proposeVisitIfNavigatedWithAction\",\n value: function proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n var _this38 = this;\n\n this.action = getVisitAction(submitter, element, frame);\n\n if (this.action) {\n var pageSnapshot = PageSnapshot.fromElement(frame).clone();\n var visitCachedSnapshot = frame.delegate.visitCachedSnapshot;\n\n frame.delegate.fetchResponseLoaded = /*#__PURE__*/function () {\n var _ref34 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee39(fetchResponse) {\n var statusCode, redirected, responseHTML, response, options;\n return _regeneratorRuntime.wrap(function _callee39$(_context39) {\n while (1) {\n switch (_context39.prev = _context39.next) {\n case 0:\n if (!frame.src) {\n _context39.next = 9;\n break;\n }\n\n statusCode = fetchResponse.statusCode, redirected = fetchResponse.redirected;\n _context39.next = 4;\n return fetchResponse.responseHTML;\n\n case 4:\n responseHTML = _context39.sent;\n response = {\n statusCode: statusCode,\n redirected: redirected,\n responseHTML: responseHTML\n };\n options = {\n response: response,\n visitCachedSnapshot: visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: _this38.restorationIdentifier,\n snapshot: pageSnapshot\n };\n if (_this38.action) options.action = _this38.action;\n session.visit(frame.src, options);\n\n case 9:\n case \"end\":\n return _context39.stop();\n }\n }\n }, _callee39);\n }));\n\n return function (_x35) {\n return _ref34.apply(this, arguments);\n };\n }();\n }\n }\n }, {\n key: \"changeHistory\",\n value: function changeHistory() {\n if (this.action) {\n var method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n }, {\n key: \"extractForeignFrameElement\",\n value: function () {\n var _extractForeignFrameElement = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee40(container) {\n var element, id;\n return _regeneratorRuntime.wrap(function _callee40$(_context40) {\n while (1) {\n switch (_context40.prev = _context40.next) {\n case 0:\n id = CSS.escape(this.id);\n _context40.prev = 1;\n element = activateElement(container.querySelector(\"turbo-frame#\".concat(id)), this.sourceURL);\n\n if (!element) {\n _context40.next = 5;\n break;\n }\n\n return _context40.abrupt(\"return\", element);\n\n case 5:\n element = activateElement(container.querySelector(\"turbo-frame[src][recurse~=\".concat(id, \"]\")), this.sourceURL);\n\n if (!element) {\n _context40.next = 12;\n break;\n }\n\n _context40.next = 9;\n return element.loaded;\n\n case 9:\n _context40.next = 11;\n return this.extractForeignFrameElement(element);\n\n case 11:\n return _context40.abrupt(\"return\", _context40.sent);\n\n case 12:\n _context40.next = 18;\n break;\n\n case 14:\n _context40.prev = 14;\n _context40.t0 = _context40[\"catch\"](1);\n console.error(_context40.t0);\n return _context40.abrupt(\"return\", new FrameElement());\n\n case 18:\n return _context40.abrupt(\"return\", null);\n\n case 19:\n case \"end\":\n return _context40.stop();\n }\n }\n }, _callee40, this, [[1, 14]]);\n }));\n\n function extractForeignFrameElement(_x36) {\n return _extractForeignFrameElement.apply(this, arguments);\n }\n\n return extractForeignFrameElement;\n }()\n }, {\n key: \"id\",\n get: // Computed properties\n function get() {\n return this.element.id;\n }\n }, {\n key: \"enabled\",\n get: function get() {\n return !this.element.disabled;\n }\n }, {\n key: \"sourceURL\",\n get: function get() {\n if (this.element.src) {\n return this.element.src;\n }\n },\n set: function set(sourceURL) {\n var _this39 = this;\n\n _classPrivateFieldLooseBase(this, _ignoringChangesToAttribute)[_ignoringChangesToAttribute](\"src\", function () {\n _this39.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n });\n }\n }, {\n key: \"loadingStyle\",\n get: function get() {\n return this.element.loading;\n }\n }, {\n key: \"isLoading\",\n get: function get() {\n return this.formSubmission !== undefined || _classPrivateFieldLooseBase(this, _resolveVisitPromise)[_resolveVisitPromise]() !== undefined;\n }\n }, {\n key: \"complete\",\n get: function get() {\n return this.element.hasAttribute(\"complete\");\n },\n set: function set(value) {\n var _this40 = this;\n\n _classPrivateFieldLooseBase(this, _ignoringChangesToAttribute)[_ignoringChangesToAttribute](\"complete\", function () {\n if (value) {\n _this40.element.setAttribute(\"complete\", \"\");\n } else {\n _this40.element.removeAttribute(\"complete\");\n }\n });\n }\n }, {\n key: \"isActive\",\n get: function get() {\n return this.element.isActive && _classPrivateFieldLooseBase(this, _connected)[_connected];\n }\n }, {\n key: \"rootLocation\",\n get: function get() {\n var _meta$content;\n\n var meta = this.element.ownerDocument.querySelector(\"meta[name=\\\"turbo-root\\\"]\");\n var root = (_meta$content = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _meta$content !== void 0 ? _meta$content : \"/\";\n return expandURL(root);\n }\n }]);\n\n return FrameController;\n}();\n\nfunction _loadSourceURL2() {\n return _loadSourceURL3.apply(this, arguments);\n}\n\nfunction _loadSourceURL3() {\n _loadSourceURL3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee51() {\n return _regeneratorRuntime.wrap(function _callee51$(_context51) {\n while (1) {\n switch (_context51.prev = _context51.next) {\n case 0:\n if (!(this.enabled && this.isActive && !this.complete && this.sourceURL)) {\n _context51.next = 6;\n break;\n }\n\n this.element.loaded = _classPrivateFieldLooseBase(this, _visit2)[_visit2](expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n _context51.next = 5;\n return this.element.loaded;\n\n case 5:\n _classPrivateFieldLooseBase(this, _hasBeenLoaded)[_hasBeenLoaded] = true;\n\n case 6:\n case \"end\":\n return _context51.stop();\n }\n }\n }, _callee51, this);\n }));\n return _loadSourceURL3.apply(this, arguments);\n}\n\nfunction _loadFrameResponse2(_x39, _x40) {\n return _loadFrameResponse3.apply(this, arguments);\n}\n\nfunction _loadFrameResponse3() {\n _loadFrameResponse3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee52(fetchResponse, document) {\n var newFrameElement, snapshot, renderer;\n return _regeneratorRuntime.wrap(function _callee52$(_context52) {\n while (1) {\n switch (_context52.prev = _context52.next) {\n case 0:\n _context52.next = 2;\n return this.extractForeignFrameElement(document.body);\n\n case 2:\n newFrameElement = _context52.sent;\n\n if (!newFrameElement) {\n _context52.next = 19;\n break;\n }\n\n snapshot = new Snapshot(newFrameElement);\n renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n\n if (!this.view.renderPromise) {\n _context52.next = 9;\n break;\n }\n\n _context52.next = 9;\n return this.view.renderPromise;\n\n case 9:\n this.changeHistory();\n _context52.next = 12;\n return this.view.render(renderer);\n\n case 12:\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n _context52.next = 17;\n return this.fetchResponseLoaded(fetchResponse);\n\n case 17:\n _context52.next = 20;\n break;\n\n case 19:\n if (_classPrivateFieldLooseBase(this, _willHandleFrameMissingFromResponse)[_willHandleFrameMissingFromResponse](fetchResponse)) {\n _classPrivateFieldLooseBase(this, _handleFrameMissingFromResponse)[_handleFrameMissingFromResponse](fetchResponse);\n }\n\n case 20:\n case \"end\":\n return _context52.stop();\n }\n }\n }, _callee52, this);\n }));\n return _loadFrameResponse3.apply(this, arguments);\n}\n\nfunction _visit3(_x41) {\n return _visit4.apply(this, arguments);\n}\n\nfunction _visit4() {\n _visit4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee53(url) {\n var _classPrivateFieldLoo,\n _this54 = this;\n\n var request;\n return _regeneratorRuntime.wrap(function _callee53$(_context53) {\n while (1) {\n switch (_context53.prev = _context53.next) {\n case 0:\n request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n (_classPrivateFieldLoo = _classPrivateFieldLooseBase(this, _currentFetchRequest)[_currentFetchRequest]) === null || _classPrivateFieldLoo === void 0 ? void 0 : _classPrivateFieldLoo.cancel();\n _classPrivateFieldLooseBase(this, _currentFetchRequest)[_currentFetchRequest] = request;\n return _context53.abrupt(\"return\", new Promise(function (resolve) {\n _classPrivateFieldLooseBase(_this54, _resolveVisitPromise)[_resolveVisitPromise] = function () {\n _classPrivateFieldLooseBase(_this54, _resolveVisitPromise)[_resolveVisitPromise] = function () {};\n\n _classPrivateFieldLooseBase(_this54, _currentFetchRequest)[_currentFetchRequest] = null;\n resolve();\n };\n\n request.perform();\n }));\n\n case 4:\n case \"end\":\n return _context53.stop();\n }\n }\n }, _callee53, this);\n }));\n return _visit4.apply(this, arguments);\n}\n\nfunction _navigateFrame2(element, url, submitter) {\n var frame = _classPrivateFieldLooseBase(this, _findFrameElement3)[_findFrameElement3](element, submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n\n _classPrivateFieldLooseBase(this, _withCurrentNavigationElement)[_withCurrentNavigationElement](element, function () {\n frame.src = url;\n });\n}\n\nfunction _handleUnvisitableFrameResponse2(_x42) {\n return _handleUnvisitableFrameResponse3.apply(this, arguments);\n}\n\nfunction _handleUnvisitableFrameResponse3() {\n _handleUnvisitableFrameResponse3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee54(fetchResponse) {\n return _regeneratorRuntime.wrap(function _callee54$(_context54) {\n while (1) {\n switch (_context54.prev = _context54.next) {\n case 0:\n console.warn(\"The response (\".concat(fetchResponse.statusCode, \") from is performing a full page visit due to turbo-visit-control.\"));\n _context54.next = 3;\n return _classPrivateFieldLooseBase(this, _visitResponse)[_visitResponse](fetchResponse.response);\n\n case 3:\n case \"end\":\n return _context54.stop();\n }\n }\n }, _callee54, this);\n }));\n return _handleUnvisitableFrameResponse3.apply(this, arguments);\n}\n\nfunction _willHandleFrameMissingFromResponse2(fetchResponse) {\n var _this52 = this;\n\n this.element.setAttribute(\"complete\", \"\");\n var response = fetchResponse.response;\n\n var visit = /*#__PURE__*/function () {\n var _ref36 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee48(url, options) {\n return _regeneratorRuntime.wrap(function _callee48$(_context48) {\n while (1) {\n switch (_context48.prev = _context48.next) {\n case 0:\n if (url instanceof Response) {\n _classPrivateFieldLooseBase(_this52, _visitResponse)[_visitResponse](url);\n } else {\n session.visit(url, options);\n }\n\n case 1:\n case \"end\":\n return _context48.stop();\n }\n }\n }, _callee48);\n }));\n\n return function visit(_x43, _x44) {\n return _ref36.apply(this, arguments);\n };\n }();\n\n var event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: {\n response: response,\n visit: visit\n },\n cancelable: true\n });\n return !event.defaultPrevented;\n}\n\nfunction _handleFrameMissingFromResponse2(fetchResponse) {\n this.view.missing();\n\n _classPrivateFieldLooseBase(this, _throwFrameMissingError)[_throwFrameMissingError](fetchResponse);\n}\n\nfunction _throwFrameMissingError2(fetchResponse) {\n var message = \"The response (\".concat(fetchResponse.statusCode, \") did not contain the expected and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.\");\n throw new TurboFrameMissingError(message);\n}\n\nfunction _visitResponse2(_x45) {\n return _visitResponse3.apply(this, arguments);\n}\n\nfunction _visitResponse3() {\n _visitResponse3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee55(response) {\n var wrapped, responseHTML, location, redirected, statusCode;\n return _regeneratorRuntime.wrap(function _callee55$(_context55) {\n while (1) {\n switch (_context55.prev = _context55.next) {\n case 0:\n wrapped = new FetchResponse(response);\n _context55.next = 3;\n return wrapped.responseHTML;\n\n case 3:\n responseHTML = _context55.sent;\n location = wrapped.location, redirected = wrapped.redirected, statusCode = wrapped.statusCode;\n return _context55.abrupt(\"return\", session.visit(location, {\n response: {\n redirected: redirected,\n statusCode: statusCode,\n responseHTML: responseHTML\n }\n }));\n\n case 6:\n case \"end\":\n return _context55.stop();\n }\n }\n }, _callee55);\n }));\n return _visitResponse3.apply(this, arguments);\n}\n\nfunction _findFrameElement4(element, submitter) {\n var _getFrameElementById;\n\n var id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return (_getFrameElementById = getFrameElementById(id)) !== null && _getFrameElementById !== void 0 ? _getFrameElementById : this.element;\n}\n\nfunction _formActionIsVisitable2(form, submitter) {\n var action = getAction$1(form, submitter);\n return locationIsVisitable(expandURL(action), this.rootLocation);\n}\n\nfunction _shouldInterceptNavigation2(element, submitter) {\n var id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n if (element instanceof HTMLFormElement && !_classPrivateFieldLooseBase(this, _formActionIsVisitable)[_formActionIsVisitable](element, submitter)) {\n return false;\n }\n\n if (!this.enabled || id == \"_top\") {\n return false;\n }\n\n if (id) {\n var frameElement = getFrameElementById(id);\n\n if (frameElement) {\n return !frameElement.disabled;\n }\n }\n\n if (!session.elementIsNavigatable(element)) {\n return false;\n }\n\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false;\n }\n\n return true;\n}\n\nfunction _isIgnoringChangesTo2(attributeName) {\n return _classPrivateFieldLooseBase(this, _ignoredAttributes)[_ignoredAttributes].has(attributeName);\n}\n\nfunction _ignoringChangesToAttribute2(attributeName, callback) {\n _classPrivateFieldLooseBase(this, _ignoredAttributes)[_ignoredAttributes].add(attributeName);\n\n callback();\n\n _classPrivateFieldLooseBase(this, _ignoredAttributes)[_ignoredAttributes].delete(attributeName);\n}\n\nfunction _withCurrentNavigationElement2(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n}\n\nfunction getFrameElementById(id) {\n if (id != null) {\n var element = document.getElementById(id);\n\n if (element instanceof FrameElement) {\n return element;\n }\n }\n}\n\nfunction activateElement(element, currentURL) {\n if (element) {\n var src = element.getAttribute(\"src\");\n\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(\"Matching element has a source URL which references itself\"));\n }\n\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element;\n }\n }\n}\n\nvar StreamActions = {\n after: function after() {\n var _this41 = this;\n\n this.targetElements.forEach(function (e) {\n var _e$parentElement;\n\n return (_e$parentElement = e.parentElement) === null || _e$parentElement === void 0 ? void 0 : _e$parentElement.insertBefore(_this41.templateContent, e.nextSibling);\n });\n },\n append: function append() {\n var _this42 = this;\n\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(function (e) {\n return e.append(_this42.templateContent);\n });\n },\n before: function before() {\n var _this43 = this;\n\n this.targetElements.forEach(function (e) {\n var _e$parentElement2;\n\n return (_e$parentElement2 = e.parentElement) === null || _e$parentElement2 === void 0 ? void 0 : _e$parentElement2.insertBefore(_this43.templateContent, e);\n });\n },\n prepend: function prepend() {\n var _this44 = this;\n\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach(function (e) {\n return e.prepend(_this44.templateContent);\n });\n },\n remove: function remove() {\n this.targetElements.forEach(function (e) {\n return e.remove();\n });\n },\n replace: function replace() {\n var _this45 = this;\n\n this.targetElements.forEach(function (e) {\n return e.replaceWith(_this45.templateContent);\n });\n },\n update: function update() {\n var _this46 = this;\n\n this.targetElements.forEach(function (targetElement) {\n targetElement.innerHTML = \"\";\n targetElement.append(_this46.templateContent);\n });\n },\n refresh: function refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n}; //