{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/@stimulus/core/dist/src/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/src/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/src/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/src/action.js","webpack:///./node_modules/@stimulus/core/dist/src/binding.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/attribute_observer.js","webpack:///./node_modules/@stimulus/multimap/dist/src/set_operations.js","webpack:///./node_modules/@stimulus/multimap/dist/src/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/src/indexed_multimap.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/src/value_list_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/context.js","webpack:///./node_modules/@stimulus/core/dist/src/definition.js","webpack:///./node_modules/@stimulus/core/dist/src/module.js","webpack:///./node_modules/@stimulus/core/dist/src/data_map.js","webpack:///./node_modules/@stimulus/core/dist/src/selectors.js","webpack:///./node_modules/@stimulus/core/dist/src/target_set.js","webpack:///./node_modules/@stimulus/core/dist/src/scope.js","webpack:///./node_modules/@stimulus/core/dist/src/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/src/router.js","webpack:///./node_modules/@stimulus/core/dist/src/schema.js","webpack:///./node_modules/@stimulus/core/dist/src/application.js","webpack:///./node_modules/@stimulus/core/dist/src/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/src/controller.js","webpack:///./node_modules/chart.js/dist/chart.js","webpack:///./node_modules/flatpickr/dist/esm/types/options.js","webpack:///./node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///./node_modules/flatpickr/dist/esm/utils/index.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///./node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///./node_modules/flatpickr/dist/esm/index.js","webpack:///./node_modules/@kurkle/color/dist/color.esm.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///./node_modules/flatpickr/dist/l10n/fr.js","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/article_suggestions_controller.js","webpack:///./app/javascript/controllers/comment_controller.js","webpack:///./app/javascript/controllers/content_controller.js","webpack:///./app/javascript/controllers/corpus_suggestions_controller.js","webpack:///./app/javascript/controllers/form_helpers_controller.js","webpack:///./app/javascript/controllers/item_controller.js","webpack:///./app/javascript/controllers/item_kind_controller.js","webpack:///./app/javascript/controllers/keywords_suggestions_controller.js","webpack:///./app/javascript/controllers/link_entry_controller.js","webpack:///./app/javascript/controllers/mark_as_read_controller.js","webpack:///./app/javascript/controllers/message_controller.js","webpack:///./app/javascript/controllers/notification_preferences_controller.js","webpack:///./app/javascript/controllers/page_selector_controller.js","webpack:///./app/javascript/controllers/suggestions_controller.js","webpack:///./app/javascript/controllers/todo_controller.js","webpack:///./app/javascript/controllers/url_editor_controller.js","webpack:///./node_modules/chartkick/dist/chartkick.js","webpack:///./node_modules/rails-ujs/lib/assets/compiled/rails-ujs.js","webpack:///./node_modules/chartjs-plugin-annotation/dist/chartjs-plugin-annotation.esm.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:///./app/javascript/controllers/charts_controller.js","webpack:///./app/javascript/controllers/index.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./app/javascript/components/init-flatpickr.js","webpack:///./app/javascript/packs/application.js","webpack:///./app/javascript/components/semrush-campaign-field-synchroniser.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","iterator","from","_iterableToArray","_unsupportedIterableToArray","TypeError","_nonIterableSpread","_defineProperty","obj","configurable","writable","_defineProperties","target","props","length","descriptor","_typeof","constructor","_createForOfIteratorHelper","allowArrayLike","it","F","done","e","_e","f","err","normalCompletion","didErr","step","next","_e2","return","minLen","toString","slice","test","len","arr2","noop","id","uid","isNullOrUndef","type","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","fn","args","thisArg","apply","each","loopable","reverse","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone","source","map","klen","k","isValidKey","indexOf","_merger","options","tval","sval","merge","sources","current","merger","mergeIf","_mergerIf","keyResolvers","v","x","y","_getKeyResolver","_step","tmp","_iterator","split","push","_splitKey","_step2","_iterator2","resolveObjectKey","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","_step3","_iterator3","item","has","_isClickEvent","PI","Math","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","almostEquals","epsilon","abs","niceNum","range","roundedRange","round","niceRange","pow","floor","fraction","_factorize","result","sqrt","sort","pop","isNumber","isNaN","almostWhole","rounded","_setMinAndMaxByKey","array","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","arguments","undefined","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","forEach","method","base","_len","_key","res","this","unlistenArrayEvents","stub","splice","_arrayUnique","items","set","Set","requestAnimFrame","window","requestAnimationFrame","throttled","argsToUse","ticking","_len2","_key2","debounce","delay","timeout","_len3","_key3","clearTimeout","setTimeout","_toLeftRightCenter","align","_alignStartEnd","_textX","left","right","rtl","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","_iScale$getUserBounds","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","assign","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","color","getHoverColor","saturate","darken","hexString","numbers","colors","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","format","formatters","numeric","tickValue","ticks","notation","chart","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","Ticks","overrides","descriptors","getScope$1","node","_set","root","scope","Defaults","_descriptors","_appliers","instance","Constructor","_classCallCheck","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","weight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","protoProps","staticProps","targetScope","targetName","_Object$definePropert","scopeObject","targetScopeObject","privateName","defineProperties","local","appliers","_this","defaults","_scriptable","startsWith","_indexable","_fallback","duration","easing","loop","to","properties","active","resize","show","animations","visible","hide","autoPadding","padding","top","bottom","display","offset","beginAtZero","bounds","clip","grace","grid","lineWidth","drawOnChartArea","drawTicks","tickLength","tickWidth","_ctx","tickColor","border","dash","dashOffset","width","title","text","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","_measureText","data","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","j","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","w","xOffset","yOffset","cornerRadius","xOffsetW","yOffsetW","pointStyle","rotation","radius","rad","translate","rotate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","setRenderOpts","opts","translation","fillStyle","textAlign","textBaseline","decorateText","line","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","strokeStyle","decorationWidth","drawBackdrop","oldColor","fillRect","renderText","lines","strokeWidth","strokeColor","backdrop","strokeText","maxWidth","fillText","addRoundedRectPath","h","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","match","_readValueToProps","_step4","ret","objProps","read","prop","_iterator4","toTRBL","toTRBLCorners","toPadding","toFont","fallback","parseInt","console","warn","toFontString","resolve","inputs","info","cacheable","_addGrace","minmax","change","keepZero","add","createContext","parentContext","_createResolver","scopes","_cache","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","concat","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","_scopes","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_context","_subProxy","_stack","setContext","override","receiver","isScriptable","getValue","Error","join","delete","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","filter","_step5","_iterator5","resolver","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","readKey","prefix","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","_step6","_iterator6","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","_step7","_iterator7","_step8","_iterator8","_step9","_iterator9","_step10","_iterator10","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","parsed","parse","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","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","ownerDocument","defaultView","positions","getPositionedStyle","styles","suffix","pos","getRelativePosition","event","borderBox","boxSizing","paddings","borders","_getCanvasPosition","touches","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","p1","p2","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rectX","_x","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_x2","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_ref","_boundSegment","segment","prevValue","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","_computeSegments","segmentOptions","_loop","_findStartAndEnd","findStartAndEnd","splitByStyles","cur","stop","solidSegments","_fullLoop","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","_step11","_iterator11","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","replacer","EventListener","eventTarget","eventName","unorderedBindings","connect","disconnect","bindingConnected","binding","bindingDisconnected","handleEvent","extendedEvent","stopImmediatePropagation_1","stopImmediatePropagation","immediatePropagationStopped","extendEvent","_i","_a","bindings","leftIndex","rightIndex","Dispatcher","application","eventListenerMaps","started","eventListeners","eventListener","reduce","fetchEventListenerForBinding","handleError","error","message","detail","fetchEventListener","eventListenerMap","fetchEventListenerMapForEventTarget","createEventListener","descriptorPattern","parseEventTarget","eventTargetName","Action","tagName","toLowerCase","defaultEventNames","getDefaultEventNameForElement","identifier","methodName","forToken","token","descriptorString","content","trim","eventNameSuffix","getAttribute","Binding","action","willBeInvokedByEvent","invokeWithEvent","controller","Element","contains","containsElement","ElementObserver","delegate","mutationObserver","MutationObserver","mutations","processMutations","observe","attributes","childList","subtree","refresh","takeRecords","matchElementsInTree","removeElement","_b","_c","addElement","mutations_1","mutation","processMutation","processAttributeChange","attributeName","processRemovedNodes","removedNodes","processAddedNodes","addedNodes","elementAttributeChanged","matchElement","nodes","elementFromNode","processTree","elementIsActive","tree","processor","nodeType","Node","ELEMENT_NODE","isConnected","elementMatched","elementUnmatched","AttributeObserver","elementObserver","hasAttribute","querySelectorAll","selector","elementMatchedAttribute","elementUnmatchedAttribute","elementAttributeValueChanged","fetch","del","prune","extendStatics","Multimap","valuesByKey","hasKey","hasValue","some","getValuesForKey","getKeysForValue","__extends","setPrototypeOf","__proto__","__","_super","IndexedMultimap","keysByValue","TokenListObserver","attributeObserver","tokensByElement","tokensMatched","readTokensForElement","refreshTokensForElement","unmatchedTokens","matchedTokens","tokensUnmatched","tokens","tokenMatched","tokenUnmatched","previousTokens","currentTokens","firstDifferingIndex","_","findIndex","tokensAreEqual","tokenString","parseTokenString","ValueListObserver","tokenListObserver","parseResultsByToken","WeakMap","valuesByTokenByElement","fetchParseResultForToken","fetchValuesByTokenForElement","elementMatchedValue","elementUnmatchedValue","parseResult","parseToken","valuesByToken","parseValueForToken","BindingObserver","bindingsByAction","valueListObserver","actionAttribute","disconnectAllActions","schema","connectAction","disconnectAction","clear","Context","controllerConstructor","bindingObserver","dispatcher","initialize","parentElement","blessControllerConstructor","extend","bless","extendWithReflect","Controller","_newTarget","construct","Module","definition","blessDefinition","contextsByScope","connectedContexts","connectContextForScope","fetchContextForScope","disconnectContextForScope","DataMap","getFormattedKey","setAttribute","removeAttribute","replace","char","attributeValueContainsToken","TargetSet","find","targetNames","getSelectorForTargetNames","findElement","findAll","findAllElements","getSelectorForTargetName","targetDescriptor","targetAttribute","Scope","targets","head","tail","filterElements","closest","controllerSelector","controllerAttribute","ScopeObserver","scopesByIdentifierByElement","scopeReferenceCounts","scopesByIdentifier","fetchScopesByIdentifierForElement","referenceCount","scopeConnected","scopeDisconnected","Router","scopeObserver","modulesByIdentifier","contexts","loadDefinition","unloadIdentifier","connectModule","disconnectModule","getContextForElementAndIdentifier","defaultSchema","__awaiter","_arguments","P","generator","Promise","reject","fulfilled","rejected","then","__generator","body","g","label","sent","trys","ops","verb","op","Application","documentElement","router","readyState","register","load","rest","definitions","unload","identifiers","getControllerForElementAndIdentifier","defineTargetProperties","ancestors","getAncestorsForConstructor","getOwnTargetNamesForConstructor","getTargetNamesForConstructor","capitalize","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","getOwnPropertyDescriptors","_get","_superPropBase","desc","_getPrototypeOf","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","sham","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","_slicedToArray","_arrayWithHoles","_s","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","_e3","_createClass","Animator","_request","_charts","_running","_lastDate","anims","date","callbacks","numSteps","initial","currentStep","_update","_refresh","_this2","Date","now","remaining","running","draw","_active","_total","tick","_notify","charts","complete","progress","cb","_getAnims","_this$_getAnims$items","acc","_duration","cancel","animator","transparent","interpolators","boolean","factor","c0","c1","valid","mix","number","Animation","cfg","currentValue","_fn","_easing","_start","_target","_prop","_from","_to","_promises","elapsed","promises","rej","resolved","Animations","config","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","update","_animateOptions","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","_applyStack","stack","dsIndex","otherValue","singleMode","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_index","_top","_bottom","_visualValues","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","linkScales","_stacked","addElements","isPluginEnabled","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","iAxisKey","vAxisKey","adata","_adata$i","convertObjectDataToArray","_meta","isExtensible","_dataCheck","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","labels","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","getLabelForValue","_clip","defaultClip","getMaxOverflow","disabled","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","elementType","_this3","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","_ref2","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_args2","_dataChanges","_sync","newCount","computeMinSampleSize","curr","$bar","visibleMetas","getAllParsedValues","getAllScaleValues","_length","updateMinAndPrev","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","_borderProps","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","_ref4","ratio","inflateAmount","BarController","_DatasetController","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","bars","reset","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","_getSharedOptions","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","currentParsed","iScaleValue","skipNull","val","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","_this$_cachedMeta","_this$options","baseValue","minBarLength","actualBase","floating","applyStack","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","getValueForPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","_value_","BubbleController","_DatasetController2","_super2","_this$_cachedMeta2","_this$_getSharedOptio2","DoughnutController","_DatasetController3","_super3","_this4","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_this$_getRotationExt","_getRotationExtents","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_this$_getSharedOptio3","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","_chart$legend$options2","fontColor","legendItem","toggleDataVisibility","LineController","_DatasetController4","_super4","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","animated","_this$_cachedMeta3","_this$_getSharedOptio4","_this$options2","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_DatasetController5","_super5","_this5","_updateRadius","_this6","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","_this7","_chart$legend$options3","angleLines","circular","pointLabels","PieController","_DoughnutController","_super6","RadarController","_DatasetController6","_super7","pointPosition","getPointPositionForValue","ScatterController","_DatasetController7","_super8","_meta$data2","_getStartAndCountOfVi2","registry","getElement","_this$_cachedMeta4","_this$options3","abstract","adapters","_date","DateAdapterBase","members","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","handler","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","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","params","layout","wrap","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","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","BasicPlatform","_BasePlatform","_super9","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","entries","trigger","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","native","fromNativeEvent","addListener","DomPlatform","_BasePlatform2","_super10","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","attach","detach","_this$getProps","final","_this8","tickOpts","determinedMaxTicks","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","ticksLimit","maxTicksLimit","majorIndices","enabled","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","defaultRoutes","offsetFromEdge","getTicksLimit","ticksLength","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_Element","_super11","_this9","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","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","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","offsetLeft","offsetRight","_this$options7","generateTickLabels","_computeLabelSizes","tickFont","fontString","nestedLabel","caches","widths","heights","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","decimal","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","_this10","tz","gz","bz","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","proto","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","parts","routeDefaults","registerDefaults","Registry","controllers","_typedRegistries","_each","_len4","_key4","_len5","_key5","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","typedRegistry","_this11","arg","reg","_getRegistryForType","isForType","_exec","itemReg","component","camelMethod","PluginService","_init","hook","_createDescriptors","_step12","_iterator12","plugin","cancelable","_oldCache","_notifyStateChanges","localIds","getPlugin","_i2","allPlugins","_ref5","_step13","_iterator13","getOpts","pluginOpts","createDescriptors","previousDescriptors","_ref6","pluginScopeKeys","getIndexAxis","datasetDefaults","idMatchesAxis","axisFromPosition","determineAxis","_len11","scaleOptions","_key11","_i3","_scaleOptions","getAxisFromDataset","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","scaleConf","boundDs","retrieveAxisFromDatasets","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","initOptions","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","_getResolver","getResolver","subPrefixes","needContext","subResolver","_step14","_iterator14","_getResolver2","resolverCache","hasFunction","_step15","_descriptors2","_iterator15","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","_i4","intKey","getSizeForArea","field","Chart","userConfig","_this12","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","listen","_initialize","_this$options12","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","scalesOptions","axisOptions","_this13","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","init","hasUpdated","_destroyDatasetMeta","_this14","newControllers","_removeUnreferencedMetasets","order","updateIndex","ControllerClass","getController","_defaults$datasets$ty","_updateMetasets","_this15","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","_this16","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","_step16","_iterator16","_getUniformDataChanges","_ref8","datasetCount","makeSet","changeSet","_this17","noArea","_this17$_layers","_idx","_i5","_ilen","_updateDataset","_this$_resizeBeforeDr","layers","_drawDatasets","_drawDataset","useClip","getDatasetArea","setDatasetVisibility","_updateVisibility","_destroy","remove","_stop","releaseContext","_this$canvas","toDataURL","bindUserEvents","bindResponsiveEvents","_this18","_add","_this19","detached","_remove","isAttached","_this20","activeElements","_this21","lastActive","_ref9","notify","pluginId","replay","hoverOptions","deactivated","activated","updateHoverStyle","_this22","inChartArea","eventFilter","_handleEvent","_this$_active","_getActiveElements","isClick","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","version","ArcElement","_Element2","_super12","_this23","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","nonZeroBetween","betweenAngles","withinRadius","_this$getProps3","_this$options13","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref10","_ref10$move","fastPathSegment","prevX","lastY","_pathVars2","_ref11","_ref11$move","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_draw","path","_path","strokePathWithCache","_step17","segmentMethod","_iterator17","strokePathDirect","LineElement","_Element3","_super13","_this24","_points","_segments","_pointsUpdated","_interpolate","_getInterpolationMethod","_segments$i","interpolated","_step18","_iterator18","inRange$1","hitRadius","PointElement","_Element4","_super14","_this25","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","BarElement","_Element5","_super15","_this26","_this$options14","_boundingRects","addRectPath","_this$getProps6","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_Element6","_super16","_this27","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","_this28","labelFont","_computeTitleHeight","_getBoxSize","_fitRows","_fitCols","hitboxes","totalHeight","row","_itemHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","_calculateItemSize","legendItemText","calculateItemWidth","fontLineHeight","calculateLegendItemHeight","calculateItemHeight","calculateItemSize","_this$options15","rtlHelper","_step24","_iterator24","hitbox","_step25","_iterator25","_hitbox","cursor","_this29","defaultColor","halfFontSize","_getBoxSize2","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","_args","adjustHitBoxes","afterEvent","ci","_chart$legend$options","useBorderRadius","Title","_Element7","_super17","_this30","_padding","textSize","fontOpts","_this$_drawArgs","_drawArgs","plugin_title","titleBlock","createTitle","positioners","average","xSet","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","_controller$getLabelA","getLabelAndValue","formattedValue","getTooltipSize","tooltip","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","_chart$chartArea","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","_toTRBLCorners","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","defaultCallbacks","beforeTitle","tooltipItems","labelCount","afterTitle","beforeLabel","tooltipItem","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","Tooltip","_Element8","_super18","_this31","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","_this32","bodyItems","scoped","_this33","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","_ref18","positionChanged","_positionChanged","_ignoreReplayEvents","_this35","plugin_tooltip","afterInit","afterDraw","_willRender","findOrAddLabel","addedLabels","unshift","addIfString","lastIndexOf","_getLabelForValue","CategoryScale","_Scale","_super19","_this36","_startValue","_valueRange","_addedLabels","added","_step26","_iterator26","_ref20","_index3","_this$getUserBounds2","_this$getMinMax","getDecimalForPixel","relativeLabelSize","minSpacing","_ref21","LinearScaleBase","_Scale2","_super20","_this37","_endValue","_this$getUserBounds3","setMin","setMax","minSign","maxSign","maxTicks","stepSize","computeTickLimit","getTickLimit","generationOptions","dataRange","niceMin","niceMax","numSpaces","precision","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","decimalPlaces","generateTicks$1","_maxDigits","LinearScale","_LinearScaleBase","_super21","_this$getMinMax2","handleTickRangeOptions","log10Floor","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","_ref22","minExp","exp","startExp","lastTick","LogarithmicScale","_Scale3","_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","extra","createPointLabelItem","isNotOverlapped","buildPointLabelItems","hLimits","vLimits","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabelBox","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","RadialLinearScale","_LinearScaleBase2","_super23","_this39","_this$getMinMax4","_this40","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","_this$_pointLabelItem","_this$options16","_this41","drawPointLabels","gridLineOpts","drawRadiusLine","_this42","animate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","_parse","input","adapter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_Scale4","_super24","_this43","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_this$getUserBounds5","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_format","fmt","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","interpolate","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","span","TimeSeriesScale","_TimeScale","_super25","_this44","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","navigator","userAgent","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","getWeek","givenDate","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","bool","arrayify","toggleClass","elem","className","classList","createElement","tag","textContent","clearNode","firstChild","removeChild","findParent","condition","createNumberInput","inputClassName","wrapper","numInput","arrowUp","arrowDown","pattern","appendChild","getEventTarget","composedPath","doNothing","monthToStr","monthNumber","revFormat","D","dateObj","monthName","setMonth","G","getHours","H","J","K","RegExp","M","shortMonth","S","seconds","setSeconds","U","unixSeconds","W","weekNum","weekNumber","Y","setFullYear","Z","ISODate","minutes","setMinutes","u","unixMillSeconds","tokenRegex","toISOString","getMonth","getSeconds","getMinutes","substring","l10n","isMobile","frmt","overrideLocale","formatDate","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","datestr","parseDate","matched","matchIndex","regexStr","isBackSlash","escaped","exec","compareDates","date1","date2","calculateSecondsSinceMidnight","hours","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","__assign","__spreadArrays","il","jl","FlatpickrInstance","instanceConfig","flatpickr","defaultConfig","getClosestActiveElement","calendarContainer","getRootNode","activeElement","bindToInstance","setCalendarWidth","visibility","daysContainer","daysWidth","days","offsetWidth","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","preventDefault","isKeyDown","curValue","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","secondsSinceMidnight","parseSeconds","setHoursFromDate","onYearInput","changeYear","ev","_handlers","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","redraw","timeIncrement","inputElem","createEvent","dispatchEvent","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","dayFocused","isInView","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","selected","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","documentClick","isOpen","eventTarget_1","isCalendarElement","lostFocus","relatedTarget","isIgnored","timeContainer","close","newYear","newYearNum","isNewYear","dateToCheck","enable","onBlur","isInput","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","keyCode","blur","open","isTimeObj","focusAndClose","selectDate","delta_1","ctrlKey","stopPropagation","currentYearElement","elems","pluginElements","shiftKey","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","rContainer","dayElem","ts","ts1","ts2","timestamp","outOfRange","positionCalendar","minMaxDateSetter","inverseDateObj","getInputElem","querySelector","setupLocale","l10ns","default","customPositionElement","_positionElement","calendarHeight","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","innerHeight","showOnTop","pageYOffset","pageXOffset","isCenter","isRight","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","getDocumentStyleSheet","bodyWidth","centerLeft","centerIndex","centerStyle","insertRule","centerBefore","msMaxTouchPoints","selectedDate","shouldChangeMonth","selectedIndex","single","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","lastChild","insertBefore","click","wasOpen","select","CALLBACKS","setSelectedDate","toggle","updatePositionElement","inputDate","dates","parseDateRules","rule","hooks","initEvent","specificFormat","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","parseConfig","nodeName","placeholder","required","nextSibling","setupInputs","preloadedDate","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","separator","hourInput","minuteInput","military2ampm","secondInput","buildTime","customAppend","appendTo","build","evt","inputType","setupMobile","debouncedResize","ontouchstart","capture","selText","isSafari","_flatpickr","HTMLElement","HTMLCollection","NodeList","en","localize","setDefaults","jQuery","fp_incr","lim","p2b","n2b","b2n","n2p","map$1","A","B","C","E","hex","h1","h2","eq","_hexString","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","X","V","T","R","Q","O","N","L","I","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","RGB_RE","modHSL","fromObject","functionParse","rgbParse","Color","_rgb","_valid","_hslString","w2","c2","w1","rgb1","rgb2","deg","_rotate","webpackPolyfill","deprecate","paths","_loop_1","args_1","factory","fp","French","fr","webpackContext","req","webpackContextResolve","code","hasSwitchTarget","keywordMatch","switchTarget","tagTargets","regExPattern","innerText","newCommentBodyTarget","toggleSubmitButton","newCommentFormTarget","disableSubmitButton","submitButtonTarget","commentableId","submitButton","inactiveSubmitButton","log","hasFormTarget","formTarget","itemId","currentTarget","URLSearchParams","location","search","history","replaceState","decodeURIComponent","pathname","tab","form","url","formData","FormData","headers","response","json","success","showSuccessMessage","reload","showErrorMessage","successMessage","errorMessage","ctaTarget","loaderTarget","checked","listTarget","submit","hideForm","showLoader","loader1Target","cta2Target","loader2Target","itemType","xhr","XMLHttpRequest","unreadMarker","origin","setRequestHeader","send","counter","queryString","urlParams","messageId","previous_message","previousElementSibling","scrollIntoView","behavior","block","markAsRead","updateCounters","counters","credentials","urlInputTarget","handleDelete","hideResults","pageIdTarget","resultsTarget","query","Accept","page","suggestionTargets","suggestion","keywords","keyword","keywordsTarget","changeTargets","toggleBtnTargets","toggleBtn","isEditing","urlFieldTarget","urlDisplayTarget","saveButtonTarget","editButtonTarget","contentId","csrfToken","toggleEdit","alert","errors","variable","Function","isPlainObject","obj1","obj2","DATE_PATTERN","ISO8601_PATTERN","DECIMAL_SEPARATOR","toStr","toFloat","toDate","milliseconds","UTC","parseISO8601","toArr","jsOptionsFunc","defaultOptions","hideLegend","setTitle","setStacked","setXtitle","setYtitle","chartOptions","series","negativeValues","xtitle","ytitle","library","sortByTime","sortByNumberSeries","sortByNumber","isMinute","isHour","isDay","isWeek","dayOfWeek","isMonth","isYear","isDate","byteSuffixes","formatValue","pre","byteScale","suffixIdx","toPrecision","zeros","thousands","seriesOption","baseOptions","tooltips","yAxes","scaleLabel","xAxes","gridLines","defaultColors","_hideLegend","setBarMin","setBarMax","labelString","notnull","setFormatOptions","chartType","formatOptions","bytes","myAxes","xLabel","yLabel","dataPoint","dataLabel","valueLabel","jsOptions","createDataTable","i$1","s$1","j$1","rows","rows2","xtype","sortedLabels","i$2","s$2","d$1","j$2","pointBackgroundColor","pointHoverBackgroundColor","lineTension","pointRadius","pointHitRadius","ticksKey","helpers","value$1","timeDiff","unitStepSize","defaultExport","renderLineChart","allZeros","drawChart","renderPieChart","donut","renderColumnChart","barOptions","maxLabelSize","setLabelSize","renderAreaChart","renderBarChart","renderScatterChart","showLines","renderBubbleChart","defaultOptions$1","xAxis","yAxis","credits","plotOptions","areaspline","marker","hideLegend$1","verticalAlign","setTitle$1","jsOptions$1","stackedValue","stacking","setFormatOptions$1","pointFormatter","defaultExport$1","curve","symbol","pie","innerSize","categories","d2","newSeries","renderTo","loaded","defaultOptions$2","fontName","pointSize","textStyle","curveType","hAxis","titleTextStyle","gridlines","baselineColor","viewWindow","hideLegend$2","setTitle$2","setBarMin$1","setBarMax$1","setStacked$2","setXtitle$2","italic","setYtitle$2","jsOptions$2","defaultExport$2","this$1","waitForLoaded","pieHole","visualization","DataTable","addColumn","addRows","areaOpacity","renderGeoChart","colorAxis","renderTimeline","clearChart","toJSON","attachEvent","pack","runCallbacks","loadOptions","packages","__config","language","mapsApiKey","LineChart","Timeline","GeoChart","columnType","pendingRequests","runningRequests","runNext","request","$","Zepto","ajax","dataType","requestComplete","onload","status","responseText","statusText","ajaxCall","jqXHR","textStatus","errorThrown","setText","chartError","noPrefix","errorCatcher","__render","fetchDataSource","dataSource","rawData","addEvent","fn2","removeEvent","detachEvent","childOf","addAdapter","adapterType","product","getAdapterType","dataEmpty","renderChart","messages","empty","fnName","adapterName","Highcharts","google","__adapterObject","callAdapter","download","__downloadAttached","link","filename","zIndex","image","alt","src","__enterEvent","related","href","toImage","__leaveEvent","addDownloadButton","toFormattedKey","keyType","formatSeriesData","detectXTypeWithFunction","func","processSeries","noDatetime","copy","copySeries","discrete","detectXType","processSimple","perfectData","elementId","Chartkick","startRefresh","getDataSource","getData","getOptions","getChartObject","getAdapter","updateData","__updateOptions","setOptions","refreshData","sep","intervalId","setInterval","stopRefresh","clearInterval","background","tmpCanvas","tmpCtx","toBase64Image","updateRefresh","__processData","__chartName","PieChart","ColumnChart","BarChart","AreaChart","ScatterChart","BubbleChart","setDefaultOptions","eachChart","chartId","use","Rails","linkClickSelector","buttonClickSelector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","nonce","loadCSPNonce","ref","cspNonce","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","setData","csrfParam","CSRFProtection","refreshCSRFTokens","param","CustomEvent","fire","initCustomEvent","bubbles","Event","defaultPrevented","stopEverything","eventType","AcceptHeaders","createXHR","prepareOptions","processResponse","html","xml","script","getResponseHeader","beforeSend","OPENED","accept","crossDomain","withCredentials","onreadystatechange","DONE","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","toArray","serializeElement","additionalParam","encodeURIComponent","formElements","allowAction","handleConfirm","answer","confirm","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","handleDisabledElement","enableElement","disableElement","replacement","originalText","handleMethod","formContent","isRemote","handleRemote","button","enctype","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","rails","ajaxPrefilter","originalOptions","_rails_loaded","state","nearestItems","evenPoint","getPointByAxis","getNearestItem","getElements","visibleElements","inRangeByAxis","isOlderPart","act","clamp","clampAll","_Object$keys","inBoxRange","hBorderWidth","inRangeX","inRangeY","getElementCenterPoint","isPercentString","toPercent","toPositivePercent","boxAppering","defaultInitAnimation","polygon","getSize","positivePercent","toPosition","isBoundToPoint","xValue","yValue","initAnimationProperties","initAnim","applyDefault","execCallback","loadHooks","hooksContainer","widthCache","isImageOrCanvas","setBorderStyle","setShadowStyle","shadowColor","backgroundShadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","measureLabelSize","optFont","fonts","mapKey","fontsKey","calculateLabelSize","drawBox","borderShadowColor","drawLabel","elementValue","optColor","calculateTextAlignment","miterLimit","setTextStrokeStyle","lhs","applyLabelDecoration","applyLabelContent","notRadius","_ref3","drawPointStyle","limitedLineScale","xScaleID","startProp","endProp","yScaleID","scaleValue","retrieveScaleID","axes","getDimensionByScale","getChartPoint","resolveBoxProperties","_ref7","xDim","getChartDimensionByScale","xMin","xMax","yDim","yMin","yMax","resolvePointProperties","adjustCenterX","xAdjust","adjustCenterY","yAdjust","getChartCircle","resolveLineProperties","resolveFullLineProperties","_Object$keys2","scaleId","_limitedLineScale$sca","dim","resolveLimitedLineProperties","resolveBoxAndLabelProperties","initProperties","optionScope","resolveLabelElementProperties$1","calculatePosition$1","boxOpts","_labelOpts$padding","padStart","padEnd","adjust","callout","labelSize","calculateX","calculateY","rotated","cx","cy","moveHooks","eventHooks","listened","moveListened","hovered","dispatchMoveEvents","handleMoveEvents","handleClickEvents","checkElements","elementHooks","invokeHook","hooked","callbackHook","adjustScaleRange","annotations","scaleIDOption","_annotation2","getScaleLimits","changeScaleLimit","suggestedLimit","scaleLimitDefined","verifyScaleIDs","annotation","verifyProperties","_arr2","BoxAnnotation","_rotated","drawTime","LabelAnnotation","_rotated2","_visible","pointX","pointY","calloutPosition","xPoints","yPoints","rotatedPoint","resolveCalloutAutoPosition","resolveCalloutPosition","isPointInRange","_getCalloutSeparatorC","separatorStart","separatorEnd","getCalloutSeparatorAdjust","getCalloutSeparatorCoord","_getCalloutSideCoord","sideStart","sideEnd","side","getCalloutSideAdjust","getCalloutSideCoord","drawCallout","_ref12","getLabelSize","_resolveBoxProperties","boxSize","calculatePosition","measureRect","pointInLine","interpolateX","interpolateY","sqr","coordInCurve","cp","pointInCurve","coordAngleInCurve","LineAnnotation","mx","my","isPointInStroke","isOnLabel","xx","yy","_element$getProps2","dx","dy","lenSq","intersects","_ref14","_ref15","_ref13","rangeLimit","inAxisRange","_getArrowHeads2","getArrowHeads","startOpts","endOpts","startAdjust","endAdjust","ps","pe","drawArrowHeadOnCurve","drawCurve","_getArrowHeads","drawArrowHead","_ref16","_ref17","isLineInArea","_limitPointToArea","limitPointToArea","_limitPointToArea2","limitLineToArea","controlPoint","getControlPoint","labelProperties","sizes","calculateAutoRotation","rotatedSize","space","spaceAround","calculateTAdjust","calculateT","xCoordinateSizes","yCoordinateSizes","adjustLabelCoordinate","calculateLabelPosition","resolveLabelElementProperties","arrowHeadsDefaults","_ref19","lineSize","lineW","lineH","coordinate","halfSize","arrowStartOpts","arrowHeads","arrowEndOpts","getLineAdjust","arrowOpts","arrowOffsetX","_ref23","EllipseAnnotation","xRadius","yRadius","cosAngle","sinAngle","pointInEllipse","PointAnnotation","inPointRange","PolygonAnnotation","isInside","bY","bX","pointIsInPolygon","axisPoints","sides","elProps","buildPointElement","_ref24","_ref25","halfBorder","annotationTypes","directUpdater","hooks$1","optDefs","resolveObj","resolveType","animOpts","resolveAnimations","resyncElements","annotationOptions","getOrCreateElement","resolveElementProperties","toSkip","updateSubElements","resolveAnnotationOptions","mainElement","subElements","subElement","elementClass","defs","_Object$keys3","chartStates","beforeRegister","pkg","ver","strict","requireVersion","afterRegister","afterUnregister","unregister","beforeInit","verifyScaleOptions","_getElements","updateListeners","updateHooks","beforeDatasetsDraw","afterDatasetsDraw","beforeDraw","beforeEvent","afterDestroy","_getState","caller","drawableElements","main","getDrawableElements","drawElement","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","weekStartsOn","firstWeekContainsDate","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","_message","subject","RangeError","transpose","fromDate","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","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","normalizeTwoDigitYear","twoDigitYear","isCommonEra","absCurrentYear","rangeEnd","trunc","isLeapYearIndex","YearParser","isTwoDigitYear","normalizedTwoDigitYear","startOfWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","getWeekYear","_options$firstWeekCon","firstWeekOfNextYear","startOfNextYear","firstWeekOfThisYear","startOfThisYear","LocalWeekYearParser","startOfISOWeek","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","startOfWeekYear","firstWeek","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","SecondParser","FractionOfSecondParser","setMilliseconds","getTimezoneOffsetInMilliseconds","utcDate","setUTCFullYear","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","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","substr","timezone","splitDateString","parseYearResult","regex","captures","restDateString","century","parseYear","dateRegex","isWeekDate","dayOfYear","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","getUTCDay","setUTCDate","getUTCDate","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","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","targetLength","lightFormatters","signedYear","numberOfDigits","dayPeriodEnum","signedWeekYear","weekYear","isoWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","delimiter","absOffset","originalDate","isToken","preprocessor","formatterOptions","part","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","endOfSecond","endOfMinute","endOfHour","endOfWeek","endOfQuarter","endOfYear","FORMATS","_id","annotationPlugin","eventData","eventDataValue","hasClicksDataValue","createChart","clicksChartTarget","clicksDataValue","hasImpressionsDataValue","impressionsChartTarget","impressionsDataValue","hasCtrDataValue","ctrChartTarget","ctrDataValue","hasAveragePositionsDataValue","averagePositionsChartTarget","averagePositionsDataValue","yKey","eventAnnotations","createAnnotations","groupedEvents","groupEventsByDate","eventCount","eventList","flat","clicksData","impressionsData","ctrData","averagePositionsData","require","logicalName","identifierForContextKey","definitionForModuleAndIdentifier","definitionForModuleWithContextAndKey","definitionsFromContext","oninput","updateChildren","dateStart","dateEnd","initDateFlatpickr"],"mappings":"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","file":"js/application-385caf7976873a817da5.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 53);\n","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.4\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 if (!ctx && !canvas) {\n return;\n }\n\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) || prop === 'constructor') {\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 = canvas && _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 };","var EventListener =\n/** @class */\nfunction () {\n function EventListener(eventTarget, eventName) {\n this.eventTarget = eventTarget;\n this.eventName = eventName;\n this.unorderedBindings = new Set();\n }\n\n EventListener.prototype.connect = function () {\n this.eventTarget.addEventListener(this.eventName, this, false);\n };\n\n EventListener.prototype.disconnect = function () {\n this.eventTarget.removeEventListener(this.eventName, this, false);\n }; // Binding observer delegate\n\n /** @hidden */\n\n\n EventListener.prototype.bindingConnected = function (binding) {\n this.unorderedBindings.add(binding);\n };\n /** @hidden */\n\n\n EventListener.prototype.bindingDisconnected = function (binding) {\n this.unorderedBindings.delete(binding);\n };\n\n EventListener.prototype.handleEvent = function (event) {\n var extendedEvent = extendEvent(event);\n\n for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n var binding = _a[_i];\n\n if (extendedEvent.immediatePropagationStopped) {\n break;\n } else {\n binding.handleEvent(extendedEvent);\n }\n }\n };\n\n Object.defineProperty(EventListener.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.unorderedBindings).sort(function (left, right) {\n var leftIndex = left.index,\n rightIndex = right.index;\n return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n });\n },\n enumerable: true,\n configurable: true\n });\n return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n if (\"immediatePropagationStopped\" in event) {\n return event;\n } else {\n var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n return Object.assign(event, {\n immediatePropagationStopped: false,\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.immediatePropagationStopped = true;\n stopImmediatePropagation_1.call(this);\n }\n });\n }\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n function Dispatcher(application) {\n this.application = application;\n this.eventListenerMaps = new Map();\n this.started = false;\n }\n\n Dispatcher.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.connect();\n });\n }\n };\n\n Dispatcher.prototype.stop = function () {\n if (this.started) {\n this.started = false;\n this.eventListeners.forEach(function (eventListener) {\n return eventListener.disconnect();\n });\n }\n };\n\n Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n get: function get() {\n return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n return listeners.concat(Array.from(map.values()));\n }, []);\n },\n enumerable: true,\n configurable: true\n }); // Binding observer delegate\n\n /** @hidden */\n\n Dispatcher.prototype.bindingConnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n };\n /** @hidden */\n\n\n Dispatcher.prototype.bindingDisconnected = function (binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }; // Error handling\n\n\n Dispatcher.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n var eventTarget = binding.eventTarget,\n eventName = binding.eventName;\n return this.fetchEventListener(eventTarget, eventName);\n };\n\n Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName) {\n var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n var eventListener = eventListenerMap.get(eventName);\n\n if (!eventListener) {\n eventListener = this.createEventListener(eventTarget, eventName);\n eventListenerMap.set(eventName, eventListener);\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.createEventListener = function (eventTarget, eventName) {\n var eventListener = new EventListener(eventTarget, eventName);\n\n if (this.started) {\n eventListener.connect();\n }\n\n return eventListener;\n };\n\n Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n if (!eventListenerMap) {\n eventListenerMap = new Map();\n this.eventListenerMaps.set(eventTarget, eventListenerMap);\n }\n\n return eventListenerMap;\n };\n\n return Dispatcher;\n}();\n\nexport { Dispatcher };","// capture nos.: 12 23 4 43 1 5 56 7 76\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#(.+))?$/;\nexport function parseDescriptorString(descriptorString) {\n var source = descriptorString.trim();\n var matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n identifier: matches[5],\n methodName: matches[7]\n };\n}\n\nfunction parseEventTarget(eventTargetName) {\n if (eventTargetName == \"window\") {\n return window;\n } else if (eventTargetName == \"document\") {\n return document;\n }\n}\n\nexport function stringifyEventTarget(eventTarget) {\n if (eventTarget == window) {\n return \"window\";\n } else if (eventTarget == document) {\n return \"document\";\n }\n}","import { parseDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\n function Action(element, index, descriptor) {\n this.element = element;\n this.index = index;\n this.eventTarget = descriptor.eventTarget || element;\n this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n this.identifier = descriptor.identifier || error(\"missing identifier\");\n this.methodName = descriptor.methodName || error(\"missing method name\");\n }\n\n Action.forToken = function (token) {\n return new this(token.element, token.index, parseDescriptorString(token.content));\n };\n\n Action.prototype.toString = function () {\n var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n };\n\n Object.defineProperty(Action.prototype, \"eventTargetName\", {\n get: function get() {\n return stringifyEventTarget(this.eventTarget);\n },\n enumerable: true,\n configurable: true\n });\n return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n \"a\": function a(e) {\n return \"click\";\n },\n \"button\": function button(e) {\n return \"click\";\n },\n \"form\": function form(e) {\n return \"submit\";\n },\n \"input\": function input(e) {\n return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"change\";\n },\n \"select\": function select(e) {\n return \"change\";\n },\n \"textarea\": function textarea(e) {\n return \"change\";\n }\n};\nexport function getDefaultEventNameForElement(element) {\n var tagName = element.tagName.toLowerCase();\n\n if (tagName in defaultEventNames) {\n return defaultEventNames[tagName](element);\n }\n}\n\nfunction error(message) {\n throw new Error(message);\n}","var Binding =\n/** @class */\nfunction () {\n function Binding(context, action) {\n this.context = context;\n this.action = action;\n }\n\n Object.defineProperty(Binding.prototype, \"index\", {\n get: function get() {\n return this.action.index;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"eventTarget\", {\n get: function get() {\n return this.action.eventTarget;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.handleEvent = function (event) {\n if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\n }\n };\n\n Object.defineProperty(Binding.prototype, \"eventName\", {\n get: function get() {\n return this.action.eventName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"method\", {\n get: function get() {\n var method = this.controller[this.methodName];\n\n if (typeof method == \"function\") {\n return method;\n }\n\n throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n },\n enumerable: true,\n configurable: true\n });\n\n Binding.prototype.invokeWithEvent = function (event) {\n try {\n this.method.call(this.controller, event);\n } catch (error) {\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element,\n index = _a.index;\n\n var detail = {\n identifier: identifier,\n controller: controller,\n element: element,\n index: index,\n event: event\n };\n this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n }\n };\n\n Binding.prototype.willBeInvokedByEvent = function (event) {\n var eventTarget = event.target;\n\n if (this.element === eventTarget) {\n return true;\n } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n return this.scope.containsElement(eventTarget);\n } else {\n return true;\n }\n };\n\n Object.defineProperty(Binding.prototype, \"controller\", {\n get: function get() {\n return this.context.controller;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"methodName\", {\n get: function get() {\n return this.action.methodName;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Binding.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n return Binding;\n}();\n\nexport { Binding };","var ElementObserver =\n/** @class */\nfunction () {\n function ElementObserver(element, delegate) {\n var _this = this;\n\n this.element = element;\n this.started = false;\n this.delegate = delegate;\n this.elements = new Set();\n this.mutationObserver = new MutationObserver(function (mutations) {\n return _this.processMutations(mutations);\n });\n }\n\n ElementObserver.prototype.start = function () {\n if (!this.started) {\n this.started = true;\n this.mutationObserver.observe(this.element, {\n attributes: true,\n childList: true,\n subtree: true\n });\n this.refresh();\n }\n };\n\n ElementObserver.prototype.stop = function () {\n if (this.started) {\n this.mutationObserver.takeRecords();\n this.mutationObserver.disconnect();\n this.started = false;\n }\n };\n\n ElementObserver.prototype.refresh = function () {\n if (this.started) {\n var matches = new Set(this.matchElementsInTree());\n\n for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n var element = _a[_i];\n\n if (!matches.has(element)) {\n this.removeElement(element);\n }\n }\n\n for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n var element = _c[_b];\n this.addElement(element);\n }\n }\n }; // Mutation record processing\n\n\n ElementObserver.prototype.processMutations = function (mutations) {\n if (this.started) {\n for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n var mutation = mutations_1[_i];\n this.processMutation(mutation);\n }\n }\n };\n\n ElementObserver.prototype.processMutation = function (mutation) {\n if (mutation.type == \"attributes\") {\n this.processAttributeChange(mutation.target, mutation.attributeName);\n } else if (mutation.type == \"childList\") {\n this.processRemovedNodes(mutation.removedNodes);\n this.processAddedNodes(mutation.addedNodes);\n }\n };\n\n ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n var element = node;\n\n if (this.elements.has(element)) {\n if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n this.delegate.elementAttributeChanged(element, attributeName);\n } else {\n this.removeElement(element);\n }\n } else if (this.matchElement(element)) {\n this.addElement(element);\n }\n };\n\n ElementObserver.prototype.processRemovedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element) {\n this.processTree(element, this.removeElement);\n }\n }\n };\n\n ElementObserver.prototype.processAddedNodes = function (nodes) {\n for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n var node = _a[_i];\n var element = this.elementFromNode(node);\n\n if (element && this.elementIsActive(element)) {\n this.processTree(element, this.addElement);\n }\n }\n }; // Element matching\n\n\n ElementObserver.prototype.matchElement = function (element) {\n return this.delegate.matchElement(element);\n };\n\n ElementObserver.prototype.matchElementsInTree = function (tree) {\n if (tree === void 0) {\n tree = this.element;\n }\n\n return this.delegate.matchElementsInTree(tree);\n };\n\n ElementObserver.prototype.processTree = function (tree, processor) {\n for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n var element = _a[_i];\n processor.call(this, element);\n }\n };\n\n ElementObserver.prototype.elementFromNode = function (node) {\n if (node.nodeType == Node.ELEMENT_NODE) {\n return node;\n }\n };\n\n ElementObserver.prototype.elementIsActive = function (element) {\n if (element.isConnected != this.element.isConnected) {\n return false;\n } else {\n return this.element.contains(element);\n }\n }; // Element tracking\n\n\n ElementObserver.prototype.addElement = function (element) {\n if (!this.elements.has(element)) {\n if (this.elementIsActive(element)) {\n this.elements.add(element);\n\n if (this.delegate.elementMatched) {\n this.delegate.elementMatched(element);\n }\n }\n }\n };\n\n ElementObserver.prototype.removeElement = function (element) {\n if (this.elements.has(element)) {\n this.elements.delete(element);\n\n if (this.delegate.elementUnmatched) {\n this.delegate.elementUnmatched(element);\n }\n }\n };\n\n return ElementObserver;\n}();\n\nexport { ElementObserver };","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n function AttributeObserver(element, attributeName, delegate) {\n this.attributeName = attributeName;\n this.delegate = delegate;\n this.elementObserver = new ElementObserver(element, this);\n }\n\n Object.defineProperty(AttributeObserver.prototype, \"element\", {\n get: function get() {\n return this.elementObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n get: function get() {\n return \"[\" + this.attributeName + \"]\";\n },\n enumerable: true,\n configurable: true\n });\n\n AttributeObserver.prototype.start = function () {\n this.elementObserver.start();\n };\n\n AttributeObserver.prototype.stop = function () {\n this.elementObserver.stop();\n };\n\n AttributeObserver.prototype.refresh = function () {\n this.elementObserver.refresh();\n };\n\n Object.defineProperty(AttributeObserver.prototype, \"started\", {\n get: function get() {\n return this.elementObserver.started;\n },\n enumerable: true,\n configurable: true\n }); // Element observer delegate\n\n AttributeObserver.prototype.matchElement = function (element) {\n return element.hasAttribute(this.attributeName);\n };\n\n AttributeObserver.prototype.matchElementsInTree = function (tree) {\n var match = this.matchElement(tree) ? [tree] : [];\n var matches = Array.from(tree.querySelectorAll(this.selector));\n return match.concat(matches);\n };\n\n AttributeObserver.prototype.elementMatched = function (element) {\n if (this.delegate.elementMatchedAttribute) {\n this.delegate.elementMatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementUnmatched = function (element) {\n if (this.delegate.elementUnmatchedAttribute) {\n this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n }\n };\n\n AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n this.delegate.elementAttributeValueChanged(element, attributeName);\n }\n };\n\n return AttributeObserver;\n}();\n\nexport { AttributeObserver };","export function add(map, key, value) {\n fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n fetch(map, key).delete(value);\n prune(map, key);\n}\nexport function fetch(map, key) {\n var values = map.get(key);\n\n if (!values) {\n values = new Set();\n map.set(key, values);\n }\n\n return values;\n}\nexport function prune(map, key) {\n var values = map.get(key);\n\n if (values != null && values.size == 0) {\n map.delete(key);\n }\n}","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n function Multimap() {\n this.valuesByKey = new Map();\n }\n\n Object.defineProperty(Multimap.prototype, \"values\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (values, set) {\n return values.concat(Array.from(set));\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Multimap.prototype, \"size\", {\n get: function get() {\n var sets = Array.from(this.valuesByKey.values());\n return sets.reduce(function (size, set) {\n return size + set.size;\n }, 0);\n },\n enumerable: true,\n configurable: true\n });\n\n Multimap.prototype.add = function (key, value) {\n add(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.delete = function (key, value) {\n del(this.valuesByKey, key, value);\n };\n\n Multimap.prototype.has = function (key, value) {\n var values = this.valuesByKey.get(key);\n return values != null && values.has(value);\n };\n\n Multimap.prototype.hasKey = function (key) {\n return this.valuesByKey.has(key);\n };\n\n Multimap.prototype.hasValue = function (value) {\n var sets = Array.from(this.valuesByKey.values());\n return sets.some(function (set) {\n return set.has(value);\n });\n };\n\n Multimap.prototype.getValuesForKey = function (key) {\n var values = this.valuesByKey.get(key);\n return values ? Array.from(values) : [];\n };\n\n Multimap.prototype.getKeysForValue = function (value) {\n return Array.from(this.valuesByKey).filter(function (_a) {\n var key = _a[0],\n values = _a[1];\n return values.has(value);\n }).map(function (_a) {\n var key = _a[0],\n values = _a[1];\n return key;\n });\n };\n\n return Multimap;\n}();\n\nexport { Multimap };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n __extends(IndexedMultimap, _super);\n\n function IndexedMultimap() {\n var _this = _super.call(this) || this;\n\n _this.keysByValue = new Map();\n return _this;\n }\n\n Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n get: function get() {\n return Array.from(this.keysByValue.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n IndexedMultimap.prototype.add = function (key, value) {\n _super.prototype.add.call(this, key, value);\n\n add(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.delete = function (key, value) {\n _super.prototype.delete.call(this, key, value);\n\n del(this.keysByValue, value, key);\n };\n\n IndexedMultimap.prototype.hasValue = function (value) {\n return this.keysByValue.has(value);\n };\n\n IndexedMultimap.prototype.getKeysForValue = function (value) {\n var set = this.keysByValue.get(value);\n return set ? Array.from(set) : [];\n };\n\n return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\n function TokenListObserver(element, attributeName, delegate) {\n this.attributeObserver = new AttributeObserver(element, attributeName, this);\n this.delegate = delegate;\n this.tokensByElement = new Multimap();\n }\n\n Object.defineProperty(TokenListObserver.prototype, \"started\", {\n get: function get() {\n return this.attributeObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n TokenListObserver.prototype.start = function () {\n this.attributeObserver.start();\n };\n\n TokenListObserver.prototype.stop = function () {\n this.attributeObserver.stop();\n };\n\n TokenListObserver.prototype.refresh = function () {\n this.attributeObserver.refresh();\n };\n\n Object.defineProperty(TokenListObserver.prototype, \"element\", {\n get: function get() {\n return this.attributeObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.attributeObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n }); // Attribute observer delegate\n\n TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n this.tokensMatched(this.readTokensForElement(element));\n };\n\n TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n var _a = this.refreshTokensForElement(element),\n unmatchedTokens = _a[0],\n matchedTokens = _a[1];\n\n this.tokensUnmatched(unmatchedTokens);\n this.tokensMatched(matchedTokens);\n };\n\n TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n };\n\n TokenListObserver.prototype.tokensMatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenMatched(token);\n });\n };\n\n TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n var _this = this;\n\n tokens.forEach(function (token) {\n return _this.tokenUnmatched(token);\n });\n };\n\n TokenListObserver.prototype.tokenMatched = function (token) {\n this.delegate.tokenMatched(token);\n this.tokensByElement.add(token.element, token);\n };\n\n TokenListObserver.prototype.tokenUnmatched = function (token) {\n this.delegate.tokenUnmatched(token);\n this.tokensByElement.delete(token.element, token);\n };\n\n TokenListObserver.prototype.refreshTokensForElement = function (element) {\n var previousTokens = this.tokensByElement.getValuesForKey(element);\n var currentTokens = this.readTokensForElement(element);\n var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n var previousToken = _a[0],\n currentToken = _a[1];\n return !tokensAreEqual(previousToken, currentToken);\n });\n\n if (firstDifferingIndex == -1) {\n return [[], []];\n } else {\n return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n }\n };\n\n TokenListObserver.prototype.readTokensForElement = function (element) {\n var attributeName = this.attributeName;\n var tokenString = element.getAttribute(attributeName) || \"\";\n return parseTokenString(tokenString, element, attributeName);\n };\n\n return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n return tokenString.trim().split(/\\s+/).filter(function (content) {\n return content.length;\n }).map(function (content, index) {\n return {\n element: element,\n attributeName: attributeName,\n content: content,\n index: index\n };\n });\n}\n\nfunction zip(left, right) {\n var length = Math.max(left.length, right.length);\n return Array.from({\n length: length\n }, function (_, index) {\n return [left[index], right[index]];\n });\n}\n\nfunction tokensAreEqual(left, right) {\n return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\n function ValueListObserver(element, attributeName, delegate) {\n this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n this.delegate = delegate;\n this.parseResultsByToken = new WeakMap();\n this.valuesByTokenByElement = new WeakMap();\n }\n\n Object.defineProperty(ValueListObserver.prototype, \"started\", {\n get: function get() {\n return this.tokenListObserver.started;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.start = function () {\n this.tokenListObserver.start();\n };\n\n ValueListObserver.prototype.stop = function () {\n this.tokenListObserver.stop();\n };\n\n ValueListObserver.prototype.refresh = function () {\n this.tokenListObserver.refresh();\n };\n\n Object.defineProperty(ValueListObserver.prototype, \"element\", {\n get: function get() {\n return this.tokenListObserver.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n get: function get() {\n return this.tokenListObserver.attributeName;\n },\n enumerable: true,\n configurable: true\n });\n\n ValueListObserver.prototype.tokenMatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).set(token, value);\n this.delegate.elementMatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.tokenUnmatched = function (token) {\n var element = token.element;\n var value = this.fetchParseResultForToken(token).value;\n\n if (value) {\n this.fetchValuesByTokenForElement(element).delete(token);\n this.delegate.elementUnmatchedValue(element, value);\n }\n };\n\n ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n var parseResult = this.parseResultsByToken.get(token);\n\n if (!parseResult) {\n parseResult = this.parseToken(token);\n this.parseResultsByToken.set(token, parseResult);\n }\n\n return parseResult;\n };\n\n ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n var valuesByToken = this.valuesByTokenByElement.get(element);\n\n if (!valuesByToken) {\n valuesByToken = new Map();\n this.valuesByTokenByElement.set(element, valuesByToken);\n }\n\n return valuesByToken;\n };\n\n ValueListObserver.prototype.parseToken = function (token) {\n try {\n var value = this.delegate.parseValueForToken(token);\n return {\n value: value\n };\n } catch (error) {\n return {\n error: error\n };\n }\n };\n\n return ValueListObserver;\n}();\n\nexport { ValueListObserver };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n function BindingObserver(context, delegate) {\n this.context = context;\n this.delegate = delegate;\n this.bindingsByAction = new Map();\n }\n\n BindingObserver.prototype.start = function () {\n if (!this.valueListObserver) {\n this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n this.valueListObserver.start();\n }\n };\n\n BindingObserver.prototype.stop = function () {\n if (this.valueListObserver) {\n this.valueListObserver.stop();\n delete this.valueListObserver;\n this.disconnectAllActions();\n }\n };\n\n Object.defineProperty(BindingObserver.prototype, \"element\", {\n get: function get() {\n return this.context.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n get: function get() {\n return this.context.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n get: function get() {\n return this.schema.actionAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"schema\", {\n get: function get() {\n return this.context.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n get: function get() {\n return Array.from(this.bindingsByAction.values());\n },\n enumerable: true,\n configurable: true\n });\n\n BindingObserver.prototype.connectAction = function (action) {\n var binding = new Binding(this.context, action);\n this.bindingsByAction.set(action, binding);\n this.delegate.bindingConnected(binding);\n };\n\n BindingObserver.prototype.disconnectAction = function (action) {\n var binding = this.bindingsByAction.get(action);\n\n if (binding) {\n this.bindingsByAction.delete(action);\n this.delegate.bindingDisconnected(binding);\n }\n };\n\n BindingObserver.prototype.disconnectAllActions = function () {\n var _this = this;\n\n this.bindings.forEach(function (binding) {\n return _this.delegate.bindingDisconnected(binding);\n });\n this.bindingsByAction.clear();\n }; // Value observer delegate\n\n\n BindingObserver.prototype.parseValueForToken = function (token) {\n var action = Action.forToken(token);\n\n if (action.identifier == this.identifier) {\n return action;\n }\n };\n\n BindingObserver.prototype.elementMatchedValue = function (element, action) {\n this.connectAction(action);\n };\n\n BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n this.disconnectAction(action);\n };\n\n return BindingObserver;\n}();\n\nexport { BindingObserver };","import { BindingObserver } from \"./binding_observer\";\n\nvar Context =\n/** @class */\nfunction () {\n function Context(module, scope) {\n this.module = module;\n this.scope = scope;\n this.controller = new module.controllerConstructor(this);\n this.bindingObserver = new BindingObserver(this, this.dispatcher);\n\n try {\n this.controller.initialize();\n } catch (error) {\n this.handleError(error, \"initializing controller\");\n }\n }\n\n Context.prototype.connect = function () {\n this.bindingObserver.start();\n\n try {\n this.controller.connect();\n } catch (error) {\n this.handleError(error, \"connecting controller\");\n }\n };\n\n Context.prototype.disconnect = function () {\n try {\n this.controller.disconnect();\n } catch (error) {\n this.handleError(error, \"disconnecting controller\");\n }\n\n this.bindingObserver.stop();\n };\n\n Object.defineProperty(Context.prototype, \"application\", {\n get: function get() {\n return this.module.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"identifier\", {\n get: function get() {\n return this.module.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"dispatcher\", {\n get: function get() {\n return this.application.dispatcher;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Context.prototype, \"parentElement\", {\n get: function get() {\n return this.element.parentElement;\n },\n enumerable: true,\n configurable: true\n }); // Error handling\n\n Context.prototype.handleError = function (error, message, detail) {\n if (detail === void 0) {\n detail = {};\n }\n\n var _a = this,\n identifier = _a.identifier,\n controller = _a.controller,\n element = _a.element;\n\n detail = Object.assign({\n identifier: identifier,\n controller: controller,\n element: element\n }, detail);\n this.application.handleError(error, \"Error \" + message, detail);\n };\n\n return Context;\n}();\n\nexport { Context };","var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n/** @hidden */\n\n\nexport function blessDefinition(definition) {\n return {\n identifier: definition.identifier,\n controllerConstructor: blessControllerConstructor(definition.controllerConstructor)\n };\n}\n\nfunction blessControllerConstructor(controllerConstructor) {\n var constructor = extend(controllerConstructor);\n constructor.bless();\n return constructor;\n}\n\nvar extend = function () {\n function extendWithReflect(constructor) {\n function Controller() {\n var _newTarget = this && this instanceof Controller ? this.constructor : void 0;\n\n return Reflect.construct(constructor, arguments, _newTarget);\n }\n\n Controller.prototype = Object.create(constructor.prototype, {\n constructor: {\n value: Controller\n }\n });\n Reflect.setPrototypeOf(Controller, constructor);\n return Controller;\n }\n\n function testReflectExtension() {\n var a = function a() {\n this.a.call(this);\n };\n\n var b = extendWithReflect(a);\n\n b.prototype.a = function () {};\n\n return new b();\n }\n\n try {\n testReflectExtension();\n return extendWithReflect;\n } catch (error) {\n return function (constructor) {\n return (\n /** @class */\n function (_super) {\n __extends(Controller, _super);\n\n function Controller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return Controller;\n }(constructor)\n );\n };\n }\n}();","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\n function Module(application, definition) {\n this.application = application;\n this.definition = blessDefinition(definition);\n this.contextsByScope = new WeakMap();\n this.connectedContexts = new Set();\n }\n\n Object.defineProperty(Module.prototype, \"identifier\", {\n get: function get() {\n return this.definition.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n get: function get() {\n return this.definition.controllerConstructor;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Module.prototype, \"contexts\", {\n get: function get() {\n return Array.from(this.connectedContexts);\n },\n enumerable: true,\n configurable: true\n });\n\n Module.prototype.connectContextForScope = function (scope) {\n var context = this.fetchContextForScope(scope);\n this.connectedContexts.add(context);\n context.connect();\n };\n\n Module.prototype.disconnectContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (context) {\n this.connectedContexts.delete(context);\n context.disconnect();\n }\n };\n\n Module.prototype.fetchContextForScope = function (scope) {\n var context = this.contextsByScope.get(scope);\n\n if (!context) {\n context = new Context(this, scope);\n this.contextsByScope.set(scope, context);\n }\n\n return context;\n };\n\n return Module;\n}();\n\nexport { Module };","var DataMap =\n/** @class */\nfunction () {\n function DataMap(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(DataMap.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DataMap.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n\n DataMap.prototype.get = function (key) {\n key = this.getFormattedKey(key);\n return this.element.getAttribute(key);\n };\n\n DataMap.prototype.set = function (key, value) {\n key = this.getFormattedKey(key);\n this.element.setAttribute(key, value);\n return this.get(key);\n };\n\n DataMap.prototype.has = function (key) {\n key = this.getFormattedKey(key);\n return this.element.hasAttribute(key);\n };\n\n DataMap.prototype.delete = function (key) {\n if (this.has(key)) {\n key = this.getFormattedKey(key);\n this.element.removeAttribute(key);\n return true;\n } else {\n return false;\n }\n };\n\n DataMap.prototype.getFormattedKey = function (key) {\n return \"data-\" + this.identifier + \"-\" + dasherize(key);\n };\n\n return DataMap;\n}();\n\nexport { DataMap };\n\nfunction dasherize(value) {\n return value.replace(/([A-Z])/g, function (_, char) {\n return \"-\" + char.toLowerCase();\n });\n}","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","import { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n function TargetSet(scope) {\n this.scope = scope;\n }\n\n Object.defineProperty(TargetSet.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TargetSet.prototype, \"schema\", {\n get: function get() {\n return this.scope.schema;\n },\n enumerable: true,\n configurable: true\n });\n\n TargetSet.prototype.has = function (targetName) {\n return this.find(targetName) != null;\n };\n\n TargetSet.prototype.find = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findElement(selector);\n };\n\n TargetSet.prototype.findAll = function () {\n var targetNames = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n targetNames[_i] = arguments[_i];\n }\n\n var selector = this.getSelectorForTargetNames(targetNames);\n return this.scope.findAllElements(selector);\n };\n\n TargetSet.prototype.getSelectorForTargetNames = function (targetNames) {\n var _this = this;\n\n return targetNames.map(function (targetName) {\n return _this.getSelectorForTargetName(targetName);\n }).join(\", \");\n };\n\n TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n var targetDescriptor = this.identifier + \".\" + targetName;\n return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n };\n\n return TargetSet;\n}();\n\nexport { TargetSet };","import { DataMap } from \"./data_map\";\nimport { TargetSet } from \"./target_set\";\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar Scope =\n/** @class */\nfunction () {\n function Scope(schema, identifier, element) {\n this.schema = schema;\n this.identifier = identifier;\n this.element = element;\n this.targets = new TargetSet(this);\n this.data = new DataMap(this);\n }\n\n Scope.prototype.findElement = function (selector) {\n return this.findAllElements(selector)[0];\n };\n\n Scope.prototype.findAllElements = function (selector) {\n var head = this.element.matches(selector) ? [this.element] : [];\n var tail = this.filterElements(Array.from(this.element.querySelectorAll(selector)));\n return head.concat(tail);\n };\n\n Scope.prototype.filterElements = function (elements) {\n var _this = this;\n\n return elements.filter(function (element) {\n return _this.containsElement(element);\n });\n };\n\n Scope.prototype.containsElement = function (element) {\n return element.closest(this.controllerSelector) === this.element;\n };\n\n Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n get: function get() {\n return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n },\n enumerable: true,\n configurable: true\n });\n return Scope;\n}();\n\nexport { Scope };","import { Scope } from \"./scope\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\n function ScopeObserver(element, schema, delegate) {\n this.element = element;\n this.schema = schema;\n this.delegate = delegate;\n this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n this.scopesByIdentifierByElement = new WeakMap();\n this.scopeReferenceCounts = new WeakMap();\n }\n\n ScopeObserver.prototype.start = function () {\n this.valueListObserver.start();\n };\n\n ScopeObserver.prototype.stop = function () {\n this.valueListObserver.stop();\n };\n\n Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n }); // Value observer delegate\n\n /** @hidden */\n\n ScopeObserver.prototype.parseValueForToken = function (token) {\n var element = token.element,\n identifier = token.content;\n var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n var scope = scopesByIdentifier.get(identifier);\n\n if (!scope) {\n scope = new Scope(this.schema, identifier, element);\n scopesByIdentifier.set(identifier, scope);\n }\n\n return scope;\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n this.scopeReferenceCounts.set(value, referenceCount);\n\n if (referenceCount == 1) {\n this.delegate.scopeConnected(value);\n }\n };\n /** @hidden */\n\n\n ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n var referenceCount = this.scopeReferenceCounts.get(value);\n\n if (referenceCount) {\n this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n if (referenceCount == 1) {\n this.delegate.scopeDisconnected(value);\n }\n }\n };\n\n ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n if (!scopesByIdentifier) {\n scopesByIdentifier = new Map();\n this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n }\n\n return scopesByIdentifier;\n };\n\n return ScopeObserver;\n}();\n\nexport { ScopeObserver };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\n function Router(application) {\n this.application = application;\n this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n this.scopesByIdentifier = new Multimap();\n this.modulesByIdentifier = new Map();\n }\n\n Object.defineProperty(Router.prototype, \"element\", {\n get: function get() {\n return this.application.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"schema\", {\n get: function get() {\n return this.application.schema;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n get: function get() {\n return this.schema.controllerAttribute;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"modules\", {\n get: function get() {\n return Array.from(this.modulesByIdentifier.values());\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Router.prototype, \"contexts\", {\n get: function get() {\n return this.modules.reduce(function (contexts, module) {\n return contexts.concat(module.contexts);\n }, []);\n },\n enumerable: true,\n configurable: true\n });\n\n Router.prototype.start = function () {\n this.scopeObserver.start();\n };\n\n Router.prototype.stop = function () {\n this.scopeObserver.stop();\n };\n\n Router.prototype.loadDefinition = function (definition) {\n this.unloadIdentifier(definition.identifier);\n var module = new Module(this.application, definition);\n this.connectModule(module);\n };\n\n Router.prototype.unloadIdentifier = function (identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n this.disconnectModule(module);\n }\n };\n\n Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n var module = this.modulesByIdentifier.get(identifier);\n\n if (module) {\n return module.contexts.find(function (context) {\n return context.element == element;\n });\n }\n }; // Error handler delegate\n\n /** @hidden */\n\n\n Router.prototype.handleError = function (error, message, detail) {\n this.application.handleError(error, message, detail);\n }; // Scope observer delegate\n\n /** @hidden */\n\n\n Router.prototype.scopeConnected = function (scope) {\n this.scopesByIdentifier.add(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.connectContextForScope(scope);\n }\n };\n /** @hidden */\n\n\n Router.prototype.scopeDisconnected = function (scope) {\n this.scopesByIdentifier.delete(scope.identifier, scope);\n var module = this.modulesByIdentifier.get(scope.identifier);\n\n if (module) {\n module.disconnectContextForScope(scope);\n }\n }; // Modules\n\n\n Router.prototype.connectModule = function (module) {\n this.modulesByIdentifier.set(module.identifier, module);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.connectContextForScope(scope);\n });\n };\n\n Router.prototype.disconnectModule = function (module) {\n this.modulesByIdentifier.delete(module.identifier);\n var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n scopes.forEach(function (scope) {\n return module.disconnectContextForScope(scope);\n });\n };\n\n return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n controllerAttribute: \"data-controller\",\n actionAttribute: \"data-action\",\n targetAttribute: \"data-target\"\n};","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : new P(function (resolve) {\n resolve(result.value);\n }).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [0, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n function Application(element, schema) {\n if (element === void 0) {\n element = document.documentElement;\n }\n\n if (schema === void 0) {\n schema = defaultSchema;\n }\n\n this.element = element;\n this.schema = schema;\n this.dispatcher = new Dispatcher(this);\n this.router = new Router(this);\n }\n\n Application.start = function (element, schema) {\n var application = new Application(element, schema);\n application.start();\n return application;\n };\n\n Application.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , domReady()];\n\n case 1:\n _a.sent();\n\n this.router.start();\n this.dispatcher.start();\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Application.prototype.stop = function () {\n this.router.stop();\n this.dispatcher.stop();\n };\n\n Application.prototype.register = function (identifier, controllerConstructor) {\n this.load({\n identifier: identifier,\n controllerConstructor: controllerConstructor\n });\n };\n\n Application.prototype.load = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var definitions = Array.isArray(head) ? head : [head].concat(rest);\n definitions.forEach(function (definition) {\n return _this.router.loadDefinition(definition);\n });\n };\n\n Application.prototype.unload = function (head) {\n var _this = this;\n\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n var identifiers = Array.isArray(head) ? head : [head].concat(rest);\n identifiers.forEach(function (identifier) {\n return _this.router.unloadIdentifier(identifier);\n });\n };\n\n Object.defineProperty(Application.prototype, \"controllers\", {\n // Controllers\n get: function get() {\n return this.router.contexts.map(function (context) {\n return context.controller;\n });\n },\n enumerable: true,\n configurable: true\n });\n\n Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n var context = this.router.getContextForElementAndIdentifier(element, identifier);\n return context ? context.controller : null;\n }; // Error handling\n\n\n Application.prototype.handleError = function (error, message, detail) {\n console.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n };\n\n return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n return new Promise(function (resolve) {\n if (document.readyState == \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", resolve);\n } else {\n resolve();\n }\n });\n}","/** @hidden */\nexport function defineTargetProperties(constructor) {\n var prototype = constructor.prototype;\n var targetNames = getTargetNamesForConstructor(constructor);\n targetNames.forEach(function (name) {\n var _a;\n\n return defineLinkedProperties(prototype, (_a = {}, _a[name + \"Target\"] = {\n get: function get() {\n var target = this.targets.find(name);\n\n if (target) {\n return target;\n } else {\n throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n }\n }\n }, _a[name + \"Targets\"] = {\n get: function get() {\n return this.targets.findAll(name);\n }\n }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n get: function get() {\n return this.targets.has(name);\n }\n }, _a));\n });\n}\n\nfunction getTargetNamesForConstructor(constructor) {\n var ancestors = getAncestorsForConstructor(constructor);\n return Array.from(ancestors.reduce(function (targetNames, constructor) {\n getOwnTargetNamesForConstructor(constructor).forEach(function (name) {\n return targetNames.add(name);\n });\n return targetNames;\n }, new Set()));\n}\n\nfunction getAncestorsForConstructor(constructor) {\n var ancestors = [];\n\n while (constructor) {\n ancestors.push(constructor);\n constructor = Object.getPrototypeOf(constructor);\n }\n\n return ancestors;\n}\n\nfunction getOwnTargetNamesForConstructor(constructor) {\n var definition = constructor[\"targets\"];\n return Array.isArray(definition) ? definition : [];\n}\n\nfunction defineLinkedProperties(object, properties) {\n Object.keys(properties).forEach(function (name) {\n if (!(name in object)) {\n var descriptor = properties[name];\n Object.defineProperty(object, name, descriptor);\n }\n });\n}\n\nfunction capitalize(name) {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}","import { defineTargetProperties } from \"./target_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n function Controller(context) {\n this.context = context;\n }\n\n Controller.bless = function () {\n defineTargetProperties(this);\n };\n\n Object.defineProperty(Controller.prototype, \"application\", {\n get: function get() {\n return this.context.application;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"scope\", {\n get: function get() {\n return this.context.scope;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"element\", {\n get: function get() {\n return this.scope.element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"identifier\", {\n get: function get() {\n return this.scope.identifier;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"targets\", {\n get: function get() {\n return this.scope.targets;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Controller.prototype, \"data\", {\n get: function get() {\n return this.scope.data;\n },\n enumerable: true,\n configurable: true\n });\n\n Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n };\n\n Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n };\n\n Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n };\n\n Controller.targets = [];\n return Controller;\n}();\n\nexport { Controller };","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.4\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, meta) {\n var iScale = meta.iScale,\n vScale = meta.vScale;\n var iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n var vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\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 var _adata$i;\n\n key = keys[i];\n adata[i] = (_adata$i = {}, _defineProperty(_adata$i, iAxisKey, key), _defineProperty(_adata$i, vAxisKey, data[key]), _adata$i);\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 var meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\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 currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n\n var iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n var skipNull = function skipNull(meta) {\n var parsed = meta._parsed.find(function (item) {\n return item[iScale.axis] === iScaleValue;\n });\n\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 && !rects[i].hidden) {\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] && 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 = canvas && _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.4\";\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 this._resizeBeforeDraw = null;\n\n this._resize(width, height);\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 nonZeroBetween = _angleBetween(angle, startAngle, endAngle) && startAngle !== endAngle;\n var betweenAngles = _circumference >= TAU || nonZeroBetween;\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 if (count === 0 || xSet.size === 0) {\n return false;\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.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 _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\nexport var HOOKS = [\"onChange\", \"onClose\", \"onDayCreate\", \"onDestroy\", \"onKeyDown\", \"onMonthChange\", \"onOpen\", \"onParseConfig\", \"onReady\", \"onValueUpdate\", \"onYearChange\", \"onPreCalendarPosition\"];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function errorHandler(err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function getWeek(givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n var week1 = new Date(date.getFullYear(), 0, 4);\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n};","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n },\n months: {\n shorthand: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n longhand: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function ordinal(nth) {\n var s = nth % 100;\n if (s > 3 && s < 21) return \"th\";\n\n switch (s % 10) {\n case 1:\n return \"st\";\n\n case 2:\n return \"nd\";\n\n case 3:\n return \"rd\";\n\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n};\nexport default english;","export var pad = function pad(number, length) {\n if (length === void 0) {\n length = 2;\n }\n\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function int(bool) {\n return bool === true ? 1 : 0;\n};\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () {\n return fn.apply(_this, args);\n }, wait);\n };\n}\nexport var arrayify = function arrayify(obj) {\n return obj instanceof Array ? obj : [obj];\n};","export function toggleClass(elem, className, bool) {\n if (bool === true) return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined) e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n}\nexport function findParent(node, condition) {\n if (condition(node)) return node;else if (node.parentNode) return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"),\n numInput = createElement(\"input\", \"numInput \" + inputClassName),\n arrowUp = createElement(\"span\", \"arrowUp\"),\n arrowDown = createElement(\"span\", \"arrowDown\");\n\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n } else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n\n if (opts !== undefined) for (var key in opts) {\n numInput.setAttribute(key, opts[key]);\n }\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n\n return event.target;\n } catch (error) {\n return event.target;\n }\n}","import { int, pad } from \"../utils\";\n\nvar doNothing = function doNothing() {\n return undefined;\n};\n\nexport var monthToStr = function monthToStr(monthNumber, shorthand, locale) {\n return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\n};\nexport var revFormat = {\n D: doNothing,\n F: function F(dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function G(dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function H(dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function J(dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function K(dateObj, amPM, locale) {\n dateObj.setHours(dateObj.getHours() % 12 + 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function M(dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function S(dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function U(_, unixSeconds) {\n return new Date(parseFloat(unixSeconds) * 1000);\n },\n W: function W(dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function Y(dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function Z(_, ISODate) {\n return new Date(ISODate);\n },\n d: function d(dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function h(dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function i(dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function j(dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function m(dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function n(dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function s(dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function u(_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function y(dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n};\nexport var formats = {\n Z: function Z(date) {\n return date.toISOString();\n },\n D: function D(date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function F(date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function G(date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function H(date) {\n return pad(date.getHours());\n },\n J: function J(date, locale) {\n return locale.ordinal !== undefined ? date.getDate() + locale.ordinal(date.getDate()) : date.getDate();\n },\n K: function K(date, locale) {\n return locale.amPM[int(date.getHours() > 11)];\n },\n M: function M(date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function S(date) {\n return pad(date.getSeconds());\n },\n U: function U(date) {\n return date.getTime() / 1000;\n },\n W: function W(date, _, options) {\n return options.getWeek(date);\n },\n Y: function Y(date) {\n return pad(date.getFullYear(), 4);\n },\n d: function d(date) {\n return pad(date.getDate());\n },\n h: function h(date) {\n return date.getHours() % 12 ? date.getHours() % 12 : 12;\n },\n i: function i(date) {\n return pad(date.getMinutes());\n },\n j: function j(date) {\n return date.getDate();\n },\n l: function l(date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function m(date) {\n return pad(date.getMonth() + 1);\n },\n n: function n(date) {\n return date.getMonth() + 1;\n },\n s: function s(date) {\n return date.getSeconds();\n },\n u: function u(date) {\n return date.getTime();\n },\n w: function w(date) {\n return date.getDay();\n },\n y: function y(date) {\n return String(date.getFullYear()).substring(2);\n }\n};","import { tokenRegex, revFormat, formats } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function createDateFormatter(_a) {\n var _b = _a.config,\n config = _b === void 0 ? defaults : _b,\n _c = _a.l10n,\n l10n = _c === void 0 ? english : _c,\n _d = _a.isMobile,\n isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n\n return frmt.split(\"\").map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\" ? formats[c](dateObj, locale, config) : c !== \"\\\\\" ? c : \"\";\n }).join(\"\");\n };\n};\nexport var createDateParser = function createDateParser(_a) {\n var _b = _a.config,\n config = _b === void 0 ? defaults : _b,\n _c = _a.l10n,\n l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date) return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date) parsedDate = new Date(date.getTime());else if (typeof date !== \"string\" && date.toFixed !== undefined) parsedDate = new Date(date);else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n } else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n } else if (/Z$/.test(datestr) || /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n } else {\n var matched = void 0,\n ops = [];\n\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex]\n });\n }\n } else if (!isBackSlash) regexStr += \".\";\n }\n\n parsedDate = !config || !config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn,\n val = _a.val;\n return parsedDate = fn(parsedDate, val, locale) || parsedDate;\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n\n if (timeless === true) parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) {\n timeless = true;\n }\n\n if (timeless !== false) {\n return new Date(date1.getTime()).setHours(0, 0, 0, 0) - new Date(date2.getTime()).setHours(0, 0, 0, 0);\n }\n\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return 3600 * (date1.getHours() - date2.getHours()) + 60 * (date1.getMinutes() - date2.getMinutes()) + date1.getSeconds() - date2.getSeconds();\n}\nexport var isBetween = function isBetween(ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function calculateSecondsSinceMidnight(hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function parseSeconds(secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600),\n minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n\n if (hours < minHour) {\n hours = minHour;\n }\n\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds) seconds = config.minDate.getSeconds();\n }\n\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr) minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes) seconds = config.maxDate.getSeconds();\n }\n\n return {\n hours: hours,\n minutes: minutes,\n seconds: seconds\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\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __spreadArrays = this && this.__spreadArrays || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n};\n\nimport { defaults as defaultOptions, HOOKS } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\n\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English\n };\n self.parseDate = createDateParser({\n config: self.config,\n l10n: self.l10n\n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function getDaysInMonth(month, yr) {\n if (month === void 0) {\n month = self.currentMonth;\n }\n\n if (yr === void 0) {\n yr = self.currentYear;\n }\n\n if (month === 1 && (yr % 4 === 0 && yr % 100 !== 0 || yr % 400 === 0)) return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile) build();\n bindEvents();\n\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n\n updateValue(false);\n }\n\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n\n triggerEvent(\"onReady\");\n }\n\n function getClosestActiveElement() {\n var _a;\n\n return ((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode()).activeElement || document.activeElement;\n }\n\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n\n function setCalendarWidth() {\n var config = self.config;\n\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n } else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width = daysWidth + (self.weekWrapper !== undefined ? self.weekWrapper.offsetWidth : 0) + \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined || compareDates(new Date(), self.config.minDate) >= 0 ? new Date() : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n\n function ampm2military(hour, amPM) {\n return hour % 12 + 12 * int(amPM === self.l10n.amPM[1]);\n }\n\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n\n default:\n return hour % 12;\n }\n }\n\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined) return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24,\n minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60,\n seconds = self.secondElement !== undefined ? (parseInt(self.secondElement.value, 10) || 0) % 60 : 0;\n\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n\n var limitMinHours = self.config.minTime !== undefined || self.config.minDate && self.minDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.minDate, true) === 0;\n var limitMaxHours = self.config.maxTime !== undefined || self.config.maxDate && self.maxDateHasTime && self.latestSelectedDateObj && compareDates(self.latestSelectedDateObj, self.config.maxDate, true) === 0;\n\n if (self.config.maxTime !== undefined && self.config.minTime !== undefined && self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n } else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined ? self.config.maxTime : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours()) minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes()) seconds = Math.min(seconds, maxTime.getSeconds());\n }\n\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined ? self.config.minTime : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes()) minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes()) seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n\n setHours(hours, minutes, seconds);\n }\n\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n\n if (!self.hourElement || !self.minuteElement || self.isMobile) return;\n self.hourElement.value = pad(!self.config.time_24hr ? (12 + hours) % 12 + 12 * int(hours % 12 === 0) : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined) self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined) self.secondElement.value = pad(seconds);\n }\n\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n\n if (year / 1000 > 1 || event.key === \"Enter\" && !/[^\\d]/.test(year.toString())) {\n changeYear(year);\n }\n }\n\n function bind(element, event, handler, options) {\n if (event instanceof Array) return event.forEach(function (ev) {\n return bind(element, ev, handler, options);\n });\n if (element instanceof Array) return element.forEach(function (el) {\n return bind(el, event, handler, options);\n });\n element.addEventListener(event, handler, options);\n\n self._handlers.push({\n remove: function remove() {\n return element.removeEventListener(event, handler, options);\n }\n });\n }\n\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n\n if (self.isMobile) {\n setupMobile();\n return;\n }\n\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent)) bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\") onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n\n if (!self.config.inline && !self.config.static) bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined) bind(window.document, \"touchstart\", documentClick);else bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, {\n capture: true\n });\n\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n\n if (self.timeContainer !== undefined && self.minuteElement !== undefined && self.hourElement !== undefined) {\n var selText = function selText(e) {\n return getEventTarget(e).select();\n };\n\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, {\n capture: true\n });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined) bind(self.secondElement, \"focus\", function () {\n return self.secondElement && self.secondElement.select();\n });\n\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined ? self.parseDate(jumpDate) : self.latestSelectedDateObj || (self.config.minDate && self.config.minDate > self.now ? self.config.minDate : self.config.maxDate && self.config.maxDate < self.now ? self.config.maxDate : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n } catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n\n if (triggerChange && (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n\n self.redraw();\n }\n\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\")) incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem || target && target.parentNode && target.parentNode.firstChild;\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n\n if (self.config.weekNumbers) {\n var _a = buildWeeks(),\n weekWrapper = _a.weekWrapper,\n weekNumbers = _a.weekNumbers;\n\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined && self.config.appendTo.nodeType !== undefined;\n\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode) self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);else if (self.config.appendTo !== undefined) self.config.appendTo.appendChild(self.calendarContainer);\n }\n\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode) self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput) wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n\n if (!self.config.static && !self.config.inline) (self.config.appendTo !== undefined ? self.config.appendTo : window.document.body).appendChild(self.calendarContainer);\n }\n\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true),\n dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n\n if (className.indexOf(\"hidden\") === -1 && compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] && compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] && compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\") dayElement.classList.add(\"inRange\");\n }\n }\n } else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date)) dayElement.classList.add(\"inRange\");\n }\n\n if (self.weekNumbers && self.config.showMonths === 1 && className !== \"prevMonthDay\" && i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\") onMouseOver(targetNode);\n }\n\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj)) return c;\n }\n }\n\n return undefined;\n }\n\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1 ? current.dateObj.getMonth() : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m ? current.$i + delta : delta < 0 ? month.children.length - 1 : 0;\n var numMonthDays = month.children.length;\n\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj) && Math.abs(current.$i - i) >= Math.abs(delta)) return focusOnDayElem(c);\n }\n }\n\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined ? current : dayFocused ? activeElement : self.selectedDateElem !== undefined && isInView(self.selectedDateElem) ? self.selectedDateElem : self.todayDateElem !== undefined && isInView(self.todayDateElem) ? self.todayDateElem : getFirstAvailableDay(offset > 0 ? 1 : -1);\n\n if (startElem === undefined) {\n self._input.focus();\n } else if (!dayFocused) {\n focusOnDayElem(startElem);\n } else {\n getNextAvailableDay(startElem, offset);\n }\n }\n\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year),\n days = window.document.createDocumentFragment(),\n isMultiMonth = self.config.showMonths > 1,\n prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\",\n nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth,\n dayIndex = 0;\n\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth && (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n\n clearNode(self.daysContainer);\n if (self.weekNumbers) clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 || self.config.monthSelectorType !== \"dropdown\") return;\n\n var shouldBuildMonth = function shouldBuildMonth(month) {\n if (self.config.minDate !== undefined && self.currentYear === self.config.minDate.getFullYear() && month < self.config.minDate.getMonth()) {\n return false;\n }\n\n return !(self.config.maxDate !== undefined && self.currentYear === self.config.maxDate.getFullYear() && month > self.config.maxDate.getMonth());\n };\n\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i)) continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n\n if (self.currentMonth === i) {\n month.selected = true;\n }\n\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n\n if (self.config.showMonths > 1 || self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n } else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n\n var yearInput = createNumberInput(\"cur-year\", {\n tabindex: \"-1\"\n });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled = !!self.config.minDate && self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n\n self.monthNav.appendChild(self.nextMonthNav);\n }\n\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function get() {\n return self.__hidePrevMonthArrow;\n },\n set: function set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function get() {\n return self.__hideNextMonthArrow;\n },\n set: function set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar) self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getHours() : self.config.time_24hr ? defaults.hours : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getMinutes() : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr) self.timeContainer.classList.add(\"time24hr\");\n\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj ? self.latestSelectedDateObj.getSeconds() : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj ? self.hourElement.value : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n\n return self.timeContainer;\n }\n\n function buildWeekdays() {\n if (!self.weekdayContainer) self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");else clearNode(self.weekdayContainer);\n\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n\n updateWeekdays();\n return self.weekdayContainer;\n }\n\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) {\n isOffset = true;\n }\n\n var delta = isOffset ? value : value - self.currentMonth;\n if (delta < 0 && self._hidePrevMonthArrow === true || delta > 0 && self._hideNextMonthArrow === true) return;\n self.currentMonth += delta;\n\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) {\n triggerChangeEvent = true;\n }\n\n if (toInitial === void 0) {\n toInitial = true;\n }\n\n self.input.value = \"\";\n if (self.altInput !== undefined) self.altInput.value = \"\";\n if (self.mobileInput !== undefined) self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config),\n hours = _a.hours,\n minutes = _a.minutes,\n seconds = _a.seconds;\n\n setHours(hours, minutes, seconds);\n }\n\n self.redraw();\n if (triggerChangeEvent) triggerEvent(\"onChange\");\n }\n\n function close() {\n self.isOpen = false;\n\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n\n triggerEvent(\"onClose\");\n }\n\n function destroy() {\n if (self.config !== undefined) triggerEvent(\"onDestroy\");\n\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n\n self._handlers = [];\n\n if (self.mobileInput) {\n if (self.mobileInput.parentNode) self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n } else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n\n if (wrapper.parentNode) {\n while (wrapper.firstChild) {\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n }\n\n wrapper.parentNode.removeChild(wrapper);\n }\n } else self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode) self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n\n [\"_showTimeInput\", \"latestSelectedDateObj\", \"_hideNextMonthArrow\", \"_hidePrevMonthArrow\", \"__hideNextMonthArrow\", \"__hidePrevMonthArrow\", \"isMobile\", \"isOpen\", \"selectedDateElem\", \"minDateHasTime\", \"maxDateHasTime\", \"days\", \"daysContainer\", \"_input\", \"_positionElement\", \"innerContainer\", \"rContainer\", \"monthNav\", \"todayDateElem\", \"calendarContainer\", \"weekdayContainer\", \"prevMonthNav\", \"nextMonthNav\", \"monthsDropdownContainer\", \"currentMonthElement\", \"currentYearElement\", \"navigationCurrentMonth\", \"selectedDateElem\", \"config\"].forEach(function (k) {\n try {\n delete self[k];\n } catch (_) {}\n });\n }\n\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input || eventTarget_1 === self.altInput || self.element.contains(eventTarget_1) || e.path && e.path.indexOf && (~e.path.indexOf(self.input) || ~e.path.indexOf(self.altInput));\n var lostFocus = !isInput && !isCalendarElement && !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n }\n\n if (self.timeContainer !== undefined && self.minuteElement !== undefined && self.hourElement !== undefined && self.input.value !== \"\" && self.input.value !== undefined) {\n updateTime();\n }\n\n self.close();\n if (self.config && self.config.mode === \"range\" && self.selectedDates.length === 1) self.clear(false);\n }\n }\n }\n\n function changeYear(newYear) {\n if (!newYear || self.config.minDate && newYear < self.config.minDate.getFullYear() || self.config.maxDate && newYear > self.config.maxDate.getFullYear()) return;\n var newYearNum = newYear,\n isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n\n if (self.config.maxDate && self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n } else if (self.config.minDate && self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n\n function isEnabled(date, timeless) {\n var _a;\n\n if (timeless === void 0) {\n timeless = true;\n }\n\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if (self.config.minDate && dateToCheck && compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0 || self.config.maxDate && dateToCheck && compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0) return false;\n if (!self.config.enable && self.config.disable.length === 0) return true;\n if (dateToCheck === undefined) return false;\n var bool = !!self.config.enable,\n array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" && d(dateToCheck)) return bool;else if (d instanceof Date && dateToCheck !== undefined && d.getTime() === dateToCheck.getTime()) return bool;else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime() ? bool : !bool;\n } else if (_typeof(d) === \"object\" && dateToCheck !== undefined && d.from && d.to && dateToCheck.getTime() >= d.from.getTime() && dateToCheck.getTime() <= d.to.getTime()) return bool;\n }\n\n return !bool;\n }\n\n function isInView(elem) {\n if (self.daysContainer !== undefined) return elem.className.indexOf(\"hidden\") === -1 && elem.className.indexOf(\"flatpickr-disabled\") === -1 && self.daysContainer.contains(elem);\n return false;\n }\n\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n\n if (isInput && valueChanged && !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput ? self.config.altFormat : self.config.dateFormat);\n }\n }\n\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap ? element.contains(eventTarget) : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput ? self.config.altFormat : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n } else {\n self.open();\n }\n } else if (isCalendarElem(eventTarget) || allowKeydown || allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer && self.timeContainer.contains(eventTarget);\n\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n } else selectDate(e);\n\n break;\n\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n\n break;\n\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n\n if (self.daysContainer !== undefined && (allowInput === false || activeElement && isInView(activeElement))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey) focusOnDay(undefined, delta_1);else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n } else if (self.hourElement) self.hourElement.focus();\n\n break;\n\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n\n if (self.daysContainer && eventTarget.$i !== undefined || eventTarget === self.input || eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n } else if (!isTimeObj) focusOnDay(undefined, delta * 7);\n } else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n } else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement) self.hourElement.focus();\n updateTime(e);\n\n self._debouncedChange();\n }\n\n break;\n\n case 9:\n if (isTimeObj) {\n var elems = [self.hourElement, self.minuteElement, self.secondElement, self.amPM].concat(self.pluginElements).filter(function (x) {\n return x;\n });\n var i = elems.indexOf(eventTarget);\n\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n\n (target || self._input).focus();\n }\n } else if (!self.config.noCalendar && self.daysContainer && self.daysContainer.contains(eventTarget) && e.shiftKey) {\n e.preventDefault();\n\n self._input.focus();\n }\n\n break;\n\n default:\n break;\n }\n }\n\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) {\n cellClass = \"flatpickr-day\";\n }\n\n if (self.selectedDates.length !== 1 || elem && (!elem.classList.contains(cellClass) || elem.classList.contains(\"flatpickr-disabled\"))) return;\n var hoverDate = elem ? elem.dateObj.getTime() : self.days.firstElementChild.dateObj.getTime(),\n initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(),\n rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()),\n rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0,\n maxRange = 0;\n\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled = containsDisabled || t > rangeStartDate && t < rangeEndDate;\n if (t < initialDate && (!minRange || t > minRange)) minRange = t;else if (t > initialDate && (!maxRange || t < maxRange)) maxRange = t;\n }\n }\n\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = minRange > 0 && timestamp < minRange || maxRange > 0 && timestamp > maxRange;\n\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n } else if (containsDisabled && !outOfRange) return;\n\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime() ? \"startRange\" : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate) dayElem.classList.add(\"startRange\");else if (initialDate > hoverDate && timestamp === initialDate) dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange && (maxRange === 0 || timestamp <= maxRange) && isBetween(timestamp, initialDate, hoverDate)) dayElem.classList.add(\"inRange\");\n }\n });\n }\n\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline) positionCalendar();\n }\n\n function open(e, positionElement) {\n if (positionElement === void 0) {\n positionElement = self._positionElement;\n }\n\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n\n triggerEvent(\"onOpen\");\n return;\n } else if (self._input.disabled || self.config.inline) {\n return;\n }\n\n var wasOpen = self.isOpen;\n self.isOpen = true;\n\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n\n self._input.classList.add(\"active\");\n\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false && (e === undefined || !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () {\n return self.hourElement.select();\n }, 50);\n }\n }\n }\n\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat);\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] = dateObj.getHours() > 0 || dateObj.getMinutes() > 0 || dateObj.getSeconds() > 0;\n }\n\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) {\n return isEnabled(d);\n });\n if (!self.selectedDates.length && type === \"min\") setHoursFromDate(dateObj);\n updateValue();\n }\n\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined) self.currentYearElement[type] = dateObj.getFullYear().toString();else self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled = !!inverseDateObj && dateObj !== undefined && inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n\n function parseConfig() {\n var boolOpts = [\"wrap\", \"weekNumbers\", \"allowInput\", \"allowInvalidPreload\", \"clickOpens\", \"time_24hr\", \"enableTime\", \"noCalendar\", \"altInput\", \"shorthandCurrentMonth\", \"inline\", \"static\", \"enableSeconds\", \"disableMobile\"];\n\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function get() {\n return self.config._enable;\n },\n set: function set(dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function get() {\n return self.config._disable;\n },\n set: function set(dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat = userConfig.noCalendar || timeMode ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\") : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n\n if (userConfig.altInput && (userConfig.enableTime || timeMode) && !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat = userConfig.noCalendar || timeMode ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\") : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n\n Object.defineProperty(self.config, \"minDate\", {\n get: function get() {\n return self.config._minDate;\n },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function get() {\n return self.config._maxDate;\n },\n set: minMaxDateSetter(\"max\")\n });\n\n var minMaxTimeSetter = function minMaxTimeSetter(type) {\n return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n };\n\n Object.defineProperty(self.config, \"minTime\", {\n get: function get() {\n return self.config._minTime;\n },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function get() {\n return self.config._maxTime;\n },\n set: minMaxTimeSetter(\"max\")\n });\n\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n\n Object.assign(self.config, formats, userConfig);\n\n for (var i = 0; i < boolOpts.length; i++) {\n self.config[boolOpts[i]] = self.config[boolOpts[i]] === true || self.config[boolOpts[i]] === \"true\";\n }\n\n HOOKS.filter(function (hook) {\n return self.config[hook] !== undefined;\n }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile = !self.config.disableMobile && !self.config.inline && self.config.mode === \"single\" && !self.config.disable.length && !self.config.enable && !self.config.weekNumbers && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key]).map(bindToInstance).concat(self.config[key]);\n } else if (typeof userConfig[key] === \"undefined\") self.config[key] = pluginConf[key];\n }\n }\n\n if (!userConfig.altInputClass) {\n self.config.altInputClass = getInputElem().className + \" \" + self.config.altInputClass;\n }\n\n triggerEvent(\"onParseConfig\");\n }\n\n function getInputElem() {\n return self.config.wrap ? element.querySelector(\"[data-input]\") : element;\n }\n\n function setupLocale() {\n if (_typeof(self.config.locale) !== \"object\" && typeof flatpickr.l10ns[self.config.locale] === \"undefined\") self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), _typeof(self.config.locale) === \"object\" ? self.config.locale : self.config.locale !== \"default\" ? flatpickr.l10ns[self.config.locale] : undefined);\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n\n if (userConfig.time_24hr === undefined && flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({\n config: self.config,\n l10n: self.l10n\n });\n }\n\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n\n if (self.calendarContainer === undefined) return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, function (acc, child) {\n return acc + child.offsetHeight;\n }, 0),\n calendarWidth = self.calendarContainer.offsetWidth,\n configPos = self.config.position.split(\" \"),\n configPosVertical = configPos[0],\n configPosHorizontal = configPos.length > 1 ? configPos[1] : null,\n inputBounds = positionElement.getBoundingClientRect(),\n distanceFromBottom = window.innerHeight - inputBounds.bottom,\n showOnTop = configPosVertical === \"above\" || configPosVertical !== \"below\" && distanceFromBottom < calendarHeight && inputBounds.top > calendarHeight;\n var top = window.pageYOffset + inputBounds.top + (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline) return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n } else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth - (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static) return;\n self.calendarContainer.style.top = top + \"px\";\n\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n } else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n } else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined) return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n\n function getDocumentStyleSheet() {\n var editableSheet = null;\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules) continue;\n\n try {\n sheet.cssRules;\n } catch (err) {\n continue;\n }\n\n editableSheet = sheet;\n break;\n }\n\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n\n function redraw() {\n if (self.config.noCalendar || self.isMobile) return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n\n function focusAndClose() {\n self._input.focus();\n\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 || navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n } else {\n self.close();\n }\n }\n\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var isSelectable = function isSelectable(day) {\n return day.classList && day.classList.contains(\"flatpickr-day\") && !day.classList.contains(\"flatpickr-disabled\") && !day.classList.contains(\"notAllowed\");\n };\n\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined) return;\n var target = t;\n var selectedDate = self.latestSelectedDateObj = new Date(target.dateObj.getTime());\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth || selectedDate.getMonth() > self.currentMonth + self.config.showMonths - 1) && self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\") self.selectedDates = [selectedDate];else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex) self.selectedDates.splice(parseInt(selectedIndex), 1);else self.selectedDates.push(selectedDate);\n } else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0) self.selectedDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n }\n setHoursFromInputs();\n\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n\n triggerEvent(\"onMonthChange\");\n }\n\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth && self.config.mode !== \"range\" && self.config.showMonths === 1) focusOnDayElem(target);else if (self.selectedDateElem !== undefined && self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined) self.hourElement !== undefined && self.hourElement.focus();\n\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" && self.selectedDates.length === 2 && !self.config.enableTime;\n\n if (single || range) {\n focusAndClose();\n }\n }\n\n triggerChange();\n }\n\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n } else {\n self._input.removeEventListener(\"focus\", self.open);\n\n self._input.removeEventListener(\"click\", self.open);\n }\n }]\n };\n\n function set(option, value) {\n if (option !== null && _typeof(option) === \"object\") {\n Object.assign(self.config, option);\n\n for (var key in option) {\n if (CALLBACKS[key] !== undefined) CALLBACKS[key].forEach(function (x) {\n return x();\n });\n }\n } else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined) CALLBACKS[option].forEach(function (x) {\n return x();\n });else if (HOOKS.indexOf(option) > -1) self.config[option] = arrayify(value);\n }\n\n self.redraw();\n updateValue(true);\n }\n\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array) dates = inputDate.map(function (d) {\n return self.parseDate(d, format);\n });else if (inputDate instanceof Date || typeof inputDate === \"number\") dates = [self.parseDate(inputDate, format)];else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n\n case \"multiple\":\n dates = inputDate.split(self.config.conjunction).map(function (date) {\n return self.parseDate(date, format);\n });\n break;\n\n case \"range\":\n dates = inputDate.split(self.l10n.rangeSeparator).map(function (date) {\n return self.parseDate(date, format);\n });\n break;\n\n default:\n break;\n }\n } else self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = self.config.allowInvalidPreload ? dates : dates.filter(function (d) {\n return d instanceof Date && isEnabled(d, false);\n });\n if (self.config.mode === \"range\") self.selectedDates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n }\n\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) {\n triggerChange = false;\n }\n\n if (format === void 0) {\n format = self.config.dateFormat;\n }\n\n if (date !== 0 && !date || date instanceof Array && date.length === 0) return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj = self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n\n updateValue(triggerChange);\n if (triggerChange) triggerEvent(\"onChange\");\n }\n\n function parseDateRules(arr) {\n return arr.slice().map(function (rule) {\n if (typeof rule === \"string\" || typeof rule === \"number\" || rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n } else if (rule && _typeof(rule) === \"object\" && rule.from && rule.to) return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n\n return rule;\n }).filter(function (x) {\n return x;\n });\n }\n\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate || ((self.input.nodeName === \"INPUT\" || self.input.nodeName === \"TEXTAREA\") && self.input.placeholder && self.input.value === self.input.placeholder ? null : self.input.value);\n if (preloadedDate) setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate = self.selectedDates.length > 0 ? self.selectedDates[0] : self.config.minDate && self.config.minDate.getTime() > self.now.getTime() ? self.config.minDate : self.config.maxDate && self.config.maxDate.getTime() < self.now.getTime() ? self.config.maxDate : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0) self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined) self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined) self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime = !!self.config.minDate && (self.config.minDate.getHours() > 0 || self.config.minDate.getMinutes() > 0 || self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime = !!self.config.maxDate && (self.config.maxDate.getHours() > 0 || self.config.maxDate.getMinutes() > 0 || self.config.maxDate.getSeconds() > 0);\n }\n\n function setupInputs() {\n self.input = getInputElem();\n\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode) self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n\n if (!self.config.allowInput) self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n\n function setupMobile() {\n var inputType = self.config.enableTime ? self.config.noCalendar ? \"time\" : \"datetime-local\" : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr = inputType === \"datetime-local\" ? \"Y-m-d\\\\TH:i:S\" : inputType === \"date\" ? \"Y-m-d\" : \"H:i:S\";\n\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n\n if (self.config.minDate) self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate) self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\")) self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined) self.altInput.type = \"hidden\";\n\n try {\n if (self.input.parentNode) self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n } catch (_a) {}\n\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n\n function toggle(e) {\n if (self.isOpen === true) return self.close();\n self.open(e);\n }\n\n function triggerEvent(event, data) {\n if (self.config === undefined) return;\n var hooks = self.config[event];\n\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++) {\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n }\n\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date && compareDates(selectedDate, date) === 0) return \"\" + i;\n }\n\n return false;\n }\n\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2) return false;\n return compareDates(date, self.selectedDates[0]) >= 0 && compareDates(date, self.selectedDates[1]) <= 0;\n }\n\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav) return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n\n if (self.config.showMonths > 1 || self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent = monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n } else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow = self.config.minDate !== undefined && (self.currentYear === self.config.minDate.getFullYear() ? self.currentMonth <= self.config.minDate.getMonth() : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow = self.config.maxDate !== undefined && (self.currentYear === self.config.maxDate.getFullYear() ? self.currentMonth + 1 > self.config.maxDate.getMonth() : self.currentYear > self.config.maxDate.getFullYear());\n }\n\n function getDateStr(specificFormat) {\n var format = specificFormat || (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates.map(function (dObj) {\n return self.formatDate(dObj, format);\n }).filter(function (d, i, arr) {\n return self.config.mode !== \"range\" || self.config.enableTime || arr.indexOf(d) === i;\n }).join(self.config.mode !== \"range\" ? self.config.conjunction : self.l10n.rangeSeparator);\n }\n\n function updateValue(triggerChange) {\n if (triggerChange === void 0) {\n triggerChange = true;\n }\n\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value = self.latestSelectedDateObj !== undefined ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr) : \"\";\n }\n\n self.input.value = getDateStr(self.config.dateFormat);\n\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n\n if (triggerChange !== false) triggerEvent(\"onValueUpdate\");\n }\n\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n } else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n } else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n } else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\",\n eventTarget = getEventTarget(e),\n input = eventTarget;\n\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent = self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n\n var min = parseFloat(input.getAttribute(\"min\")),\n max = parseFloat(input.getAttribute(\"max\")),\n step = parseFloat(input.getAttribute(\"step\")),\n curValue = parseInt(input.value, 10),\n delta = e.delta || (isKeyDown ? e.which === 38 ? 1 : -1 : 0);\n var newValue = curValue + step * delta;\n\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement,\n isMinuteElem = input === self.minuteElement;\n\n if (newValue < min) {\n newValue = max + newValue + int(!isHourElem) + (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem) incrementNumInput(undefined, -1, self.hourElement);\n } else if (newValue > max) {\n newValue = input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem) incrementNumInput(undefined, 1, self.hourElement);\n }\n\n if (self.amPM && isHourElem && (step === 1 ? newValue + curValue === 23 : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent = self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n\n input.value = pad(newValue);\n }\n }\n\n init();\n return self;\n}\n\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice.call(nodeList).filter(function (x) {\n return x instanceof HTMLElement;\n });\n var instances = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null) continue;\n\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n\n node._flatpickr = undefined;\n }\n\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n } catch (e) {\n console.error(e);\n }\n }\n\n return instances.length === 1 ? instances[0] : instances;\n}\n\nif (typeof HTMLElement !== \"undefined\" && typeof HTMLCollection !== \"undefined\" && typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\n\nvar flatpickr = function flatpickr(selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n } else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n } else {\n return _flatpickr(selector, config);\n }\n};\n\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English)\n};\n\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\n\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\n\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\n\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\n\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\n\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\n\nexport default flatpickr;","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 };","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};","\"use strict\";\n\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var _loop_1 = function _loop_1(source) {\n if (source) {\n Object.keys(source).forEach(function (key) {\n return target[key] = source[key];\n });\n }\n };\n\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n\n _loop_1(source);\n }\n\n return target;\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) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fr = {}));\n})(this, function (exports) {\n 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined ? window.flatpickr : {\n l10ns: {}\n };\n var French = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n longhand: [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"]\n },\n months: {\n shorthand: [\"janv\", \"févr\", \"mars\", \"avr\", \"mai\", \"juin\", \"juil\", \"août\", \"sept\", \"oct\", \"nov\", \"déc\"],\n longhand: [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"]\n },\n ordinal: function ordinal(nth) {\n if (nth > 1) return \"\";\n return \"er\";\n },\n rangeSeparator: \" au \",\n weekAbbreviation: \"Sem\",\n scrollTitle: \"Défiler pour augmenter la valeur\",\n toggleTitle: \"Cliquer pour basculer\",\n time_24hr: true\n };\n fp.l10ns.fr = French;\n var fr = fp.l10ns;\n exports.French = French;\n exports.default = fr;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","var map = {\n\t\"./article_suggestions_controller.js\": 18,\n\t\"./charts_controller.js\": 51,\n\t\"./comment_controller.js\": 19,\n\t\"./content_controller.js\": 20,\n\t\"./corpus_suggestions_controller.js\": 21,\n\t\"./form_helpers_controller.js\": 22,\n\t\"./item_controller.js\": 23,\n\t\"./item_kind_controller.js\": 24,\n\t\"./keywords_suggestions_controller.js\": 25,\n\t\"./link_entry_controller.js\": 26,\n\t\"./mark_as_read_controller.js\": 27,\n\t\"./message_controller.js\": 28,\n\t\"./notification_preferences_controller.js\": 29,\n\t\"./page_selector_controller.js\": 30,\n\t\"./suggestions_controller.js\": 31,\n\t\"./todo_controller.js\": 32,\n\t\"./tribute_controller.js\": 33,\n\t\"./url_editor_controller.js\": 34\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 17;","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'tag',\n 'switch'\n ];\n\n connect(){\n if (this.hasSwitchTarget) {\n this.keywordMatch({\n detail: this.switchTarget.innerHTML\n })\n }\n }\n\n keywordMatch(e){\n const text = e.detail\n\n this.tagTargets.forEach((tag) => {\n const keyword = tag.innerText\n var regExPattern = '\\\\b'+keyword+'\\\\b'\n tag.classList.toggle('active', text.match(new RegExp(regExPattern, 'gi'))\n )\n })\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\"newCommentBody\", \"newCommentForm\", \"submitButton\"];\n\n connect() {\n this.newCommentBodyTarget.addEventListener('keyup', this.toggleSubmitButton);\n this.newCommentFormTarget.addEventListener('submit', this.disableSubmitButton);\n this.submitButtonTarget.style.display = \"none\";\n }\n\n toggleSubmitButton(e) {\n let length = this.value.length;\n let commentableId = this.dataset.id;\n let submitButton = document.getElementById('submit' + commentableId);\n let inactiveSubmitButton = document.getElementById('inactiveSubmitButton' + commentableId);\n\n if (length) {\n submitButton.style.display = \"inline-block\";\n inactiveSubmitButton.style.display = \"none\";\n } else {\n submitButton.style.display = \"none\";\n inactiveSubmitButton.style.display = \"inline-block\";\n }\n }\n\n disableSubmitButton(e) {\n let commentableId = this.dataset.id;\n let submitButton = this.querySelectorAll(\"input[type=submit]\")[0];\n let inactiveSubmitButton = document.getElementById('inactiveSubmitButton' + commentableId);\n submitButton.style.display = \"none\";\n inactiveSubmitButton.style.display = \"inline-block\";\n }\n}\n","// Visit The Stimulus Handbook for more details\n// https://stimulusjs.org/handbook/introduction\n//\n// This example controller works with specially annotated HTML like:\n//\n//
\n Aucune page n'éxiste avec cette URL, elle sera utilisée pour en créer une nouvelle: ${query}\n \n `;\n }\n this.resultsTarget.style.display = \"block\";\n });\n }\n\n select(event) {\n event.preventDefault();\n const { id, url } = event.currentTarget.dataset;\n this.urlInputTarget.value = url;\n this.pageIdTarget.value = id;\n this.resultsTarget.style.display = \"none\";\n }\n\n useNew(event) {\n event.preventDefault();\n this.pageIdTarget.value = \"\"; // Clear page ID since this is a new page\n this.resultsTarget.style.display = \"none\";\n }\n\n hideResults(event) {\n if (!this.element.contains(event.target)) {\n this.resultsTarget.style.display = \"none\";\n }\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\n 'keywords',\n 'suggestion'\n ];\n\n connect() {\n this.suggestionTargets.forEach((suggestion) => {\n if (this.keywords().includes(suggestion.innerText)) {\n suggestion.classList.add('active');\n }\n })\n }\n\n toggle(e){\n e.currentTarget.classList.toggle('active');\n const keyword = e.currentTarget.innerText\n const keywords = this.keywords()\n if (keywords.includes(keyword)) {\n keywords.splice(keywords.indexOf(keyword), 1);\n } else {\n keywords.push(keyword)\n }\n this.keywordsTarget.value = keywords.filter(function(el) { return el != ''; }).join(',')\n }\n\n keywords(){\n return this.keywordsTarget.value.split(',')\n .map((keyword) => keyword.replace(/^\\s+/g, ''))\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n static targets = [\n \"change\",\n \"toggleBtn\"\n ]\n\n admintoggle() {\n this.changeTargets.forEach((element) => {\n element.classList.toggle('collapsed');\n })\n\n this.toggleBtnTargets.forEach((toggleBtn) => {\n toggleBtn.classList.toggle('hidden');\n })\n }\n}\n","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n static targets = [\"urlField\", \"urlDisplay\", \"saveButton\", \"editButton\"];\n\n connect() {\n console.log(\"UrlEditorController connected\");\n }\n\n toggleEdit() {\n const isEditing = this.urlFieldTarget.style.display === \"block\";\n\n // Toggle visibility of elements based on the current state\n this.urlFieldTarget.style.display = isEditing ? \"none\" : \"block\";\n this.urlDisplayTarget.style.display = isEditing ? \"block\" : \"none\";\n this.saveButtonTarget.style.display = isEditing ? \"none\" : \"block\";\n this.editButtonTarget.textContent = isEditing ? \"Modifier\" : \"Annuler\";\n }\n\n saveUrl() {\n const url = this.urlFieldTarget.value;\n const contentId = this.saveButtonTarget.dataset.id;\n const csrfToken = document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute(\"content\");\n\n fetch(`/contents/${contentId}/update_url`, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": csrfToken,\n },\n body: JSON.stringify({ url }),\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.success) {\n this.urlDisplayTarget.textContent = url;\n this.toggleEdit(); // Close editing mode\n alert(\"URL mise à jour avec succès !\");\n document.querySelector(\n '[data-target=\"page-selector.results\"]'\n ).style.display = \"none\";\n } else {\n alert(\n \"Erreur lors de la mise à jour de l'URL: \" + data.errors.join(\", \")\n );\n }\n })\n .catch((error) => {\n console.error(\"Error:\", error);\n alert(\"Error updating URL.\");\n });\n this.saveButtonTarget.disabled = false;\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\n/*\n * Chartkick.js\n * Create beautiful charts with one line of JavaScript\n * https://github.com/ankane/chartkick.js\n * v3.2.1\n * MIT License\n */\n(function (global, factory) {\n (typeof exports === \"undefined\" ? \"undefined\" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = global || self, global.Chartkick = factory());\n})(this, function () {\n 'use strict';\n\n function isArray(variable) {\n return Object.prototype.toString.call(variable) === \"[object Array]\";\n }\n\n function isFunction(variable) {\n return variable instanceof Function;\n }\n\n function 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\n function extend(target, source) {\n var key;\n\n for (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\n function merge(obj1, obj2) {\n var target = {};\n extend(target, obj1);\n extend(target, obj2);\n return target;\n }\n\n var DATE_PATTERN = /^(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)$/i; // https://github.com/Do/iso8601.js\n\n var ISO8601_PATTERN = /(\\d\\d\\d\\d)(-)?(\\d\\d)(-)?(\\d\\d)(T)?(\\d\\d)(:)?(\\d\\d)?(:)?(\\d\\d)?([.,]\\d+)?($|Z|([+-])(\\d\\d)(:)?(\\d\\d)?)/i;\n var DECIMAL_SEPARATOR = String(1.5).charAt(1);\n\n function parseISO8601(input) {\n var day, hour, matches, milliseconds, minutes, month, offset, result, seconds, type, year;\n type = Object.prototype.toString.call(input);\n\n if (type === \"[object Date]\") {\n return input;\n }\n\n if (type !== \"[object String]\") {\n return;\n }\n\n matches = input.match(ISO8601_PATTERN);\n\n if (matches) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n hour = parseInt(matches[7], 10);\n minutes = matches[9] ? parseInt(matches[9], 10) : 0;\n seconds = matches[11] ? parseInt(matches[11], 10) : 0;\n milliseconds = matches[12] ? parseFloat(DECIMAL_SEPARATOR + matches[12].slice(1)) * 1000 : 0;\n result = Date.UTC(year, month, day, hour, minutes, seconds, milliseconds);\n\n if (matches[13] && matches[14]) {\n offset = matches[15] * 60;\n\n if (matches[17]) {\n offset += parseInt(matches[17], 10);\n }\n\n offset *= matches[14] === \"-\" ? -1 : 1;\n result -= offset * 60 * 1000;\n }\n\n return new Date(result);\n }\n } // end iso8601.js\n\n\n function negativeValues(series) {\n var i, j, data;\n\n for (i = 0; i < series.length; i++) {\n data = series[i].data;\n\n for (j = 0; j < data.length; j++) {\n if (data[j][1] < 0) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n function toStr(n) {\n return \"\" + n;\n }\n\n function toFloat(n) {\n return parseFloat(n);\n }\n\n function toDate(n) {\n var matches, year, month, day;\n\n if (_typeof(n) !== \"object\") {\n if (typeof n === \"number\") {\n n = new Date(n * 1000); // ms\n } else {\n n = toStr(n);\n\n if (matches = n.match(DATE_PATTERN)) {\n year = parseInt(matches[1], 10);\n month = parseInt(matches[3], 10) - 1;\n day = parseInt(matches[5], 10);\n return new Date(year, month, day);\n } else {\n // str\n // try our best to get the str into iso8601\n // TODO be smarter about this\n var str = n.replace(/ /, \"T\").replace(\" \", \"\").replace(\"UTC\", \"Z\");\n n = parseISO8601(str) || new Date(n);\n }\n }\n }\n\n return n;\n }\n\n function toArr(n) {\n if (!isArray(n)) {\n var arr = [],\n i;\n\n for (i in n) {\n if (n.hasOwnProperty(i)) {\n arr.push([i, n[i]]);\n }\n }\n\n n = arr;\n }\n\n return n;\n }\n\n function 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.hideLegend || \"legend\" in opts) {\n hideLegend(options, opts.legend, chart.hideLegend);\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\n function sortByTime(a, b) {\n return a[0].getTime() - b[0].getTime();\n }\n\n function sortByNumberSeries(a, b) {\n return a[0] - b[0];\n }\n\n function sortByNumber(a, b) {\n return a - b;\n }\n\n function isMinute(d) {\n return d.getMilliseconds() === 0 && d.getSeconds() === 0;\n }\n\n function isHour(d) {\n return isMinute(d) && d.getMinutes() === 0;\n }\n\n function isDay(d) {\n return isHour(d) && d.getHours() === 0;\n }\n\n function isWeek(d, dayOfWeek) {\n return isDay(d) && d.getDay() === dayOfWeek;\n }\n\n function isMonth(d) {\n return isDay(d) && d.getDate() === 1;\n }\n\n function isYear(d) {\n return isMonth(d) && d.getMonth() === 0;\n }\n\n function isDate(obj) {\n return !isNaN(toDate(obj)) && toStr(obj).length >= 6;\n }\n\n function isNumber(obj) {\n return typeof obj === \"number\";\n }\n\n var byteSuffixes = [\"bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\"];\n\n function 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 suffixIdx;\n var baseValue = axis ? options.byteScale : value;\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];\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\n function 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\n function allZeros(data) {\n var i, j, d;\n\n for (i = 0; i < data.length; i++) {\n d = data[i].data;\n\n for (j = 0; j < d.length; j++) {\n if (d[j][1] != 0) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n var baseOptions = {\n maintainAspectRatio: false,\n animation: false,\n tooltips: {\n displayColors: false,\n callbacks: {}\n },\n legend: {},\n title: {\n fontSize: 20,\n fontColor: \"#333\"\n }\n };\n var defaultOptions = {\n scales: {\n yAxes: [{\n ticks: {\n maxTicksLimit: 4\n },\n scaleLabel: {\n fontSize: 16,\n // fontStyle: \"bold\",\n fontColor: \"#333\"\n }\n }],\n xAxes: [{\n gridLines: {\n drawOnChartArea: false\n },\n scaleLabel: {\n fontSize: 16,\n // fontStyle: \"bold\",\n fontColor: \"#333\"\n },\n time: {},\n ticks: {}\n }]\n }\n }; // http://there4.io/2012/05/02/google-chart-color-list/\n\n var defaultColors = [\"#3366CC\", \"#DC3912\", \"#FF9900\", \"#109618\", \"#990099\", \"#3B3EAC\", \"#0099C6\", \"#DD4477\", \"#66AA00\", \"#B82E2E\", \"#316395\", \"#994499\", \"#22AA99\", \"#AAAA11\", \"#6633CC\", \"#E67300\", \"#8B0707\", \"#329262\", \"#5574A6\", \"#651067\"];\n\n var hideLegend = function hideLegend(options, legend, _hideLegend) {\n if (legend !== undefined) {\n options.legend.display = !!legend;\n\n if (legend && legend !== true) {\n options.legend.position = legend;\n }\n } else if (_hideLegend) {\n options.legend.display = false;\n }\n };\n\n var setTitle = function setTitle(options, title) {\n options.title.display = true;\n options.title.text = title;\n };\n\n var setMin = function setMin(options, min) {\n if (min !== null) {\n options.scales.yAxes[0].ticks.min = toFloat(min);\n }\n };\n\n var setMax = function setMax(options, max) {\n options.scales.yAxes[0].ticks.max = toFloat(max);\n };\n\n var setBarMin = function setBarMin(options, min) {\n if (min !== null) {\n options.scales.xAxes[0].ticks.min = toFloat(min);\n }\n };\n\n var setBarMax = function setBarMax(options, max) {\n options.scales.xAxes[0].ticks.max = toFloat(max);\n };\n\n var setStacked = function setStacked(options, stacked) {\n options.scales.xAxes[0].stacked = !!stacked;\n options.scales.yAxes[0].stacked = !!stacked;\n };\n\n var setXtitle = function setXtitle(options, title) {\n options.scales.xAxes[0].scaleLabel.display = true;\n options.scales.xAxes[0].scaleLabel.labelString = title;\n };\n\n var setYtitle = function setYtitle(options, title) {\n options.scales.yAxes[0].scaleLabel.display = true;\n options.scales.yAxes[0].scaleLabel.labelString = title;\n }; // https://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n\n\n var addOpacity = function 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 }; // check if not null or undefined\n // https://stackoverflow.com/a/27757708/1177228\n\n\n var notnull = function notnull(x) {\n return x != null;\n };\n\n var setLabelSize = function 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.xAxes[0].ticks.callback) {\n options.scales.xAxes[0].ticks.callback = function (value) {\n value = toStr(value);\n\n if (value.length > maxLabelSize) {\n return value.substring(0, maxLabelSize - 2) + \"...\";\n } else {\n return value;\n }\n };\n }\n };\n\n var setFormatOptions = function 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 };\n\n if (chart.options.bytes) {\n var series = chart.data;\n\n if (chartType === \"pie\") {\n series = [{\n data: series\n }];\n } // calculate max\n\n\n var max = 0;\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 if (s.data[j][1] > max) {\n max = s.data[j][1];\n }\n }\n } // calculate scale\n\n\n var scale = 1;\n\n while (max >= 1024) {\n scale *= 1024;\n max /= 1024;\n } // set step size\n\n\n formatOptions.byteScale = scale;\n }\n\n if (chartType !== \"pie\") {\n var myAxes = options.scales.yAxes;\n\n if (chartType === \"bar\") {\n myAxes = options.scales.xAxes;\n }\n\n if (formatOptions.byteScale) {\n if (!myAxes[0].ticks.stepSize) {\n myAxes[0].ticks.stepSize = formatOptions.byteScale / 2;\n }\n\n if (!myAxes[0].ticks.maxTicksLimit) {\n myAxes[0].ticks.maxTicksLimit = 4;\n }\n }\n\n if (!myAxes[0].ticks.callback) {\n myAxes[0].ticks.callback = function (value) {\n return formatValue(\"\", value, formatOptions, true);\n };\n }\n }\n\n if (!options.tooltips.callbacks.label) {\n if (chartType === \"scatter\") {\n options.tooltips.callbacks.label = function (item, data) {\n var label = data.datasets[item.datasetIndex].label || '';\n\n if (label) {\n label += ': ';\n }\n\n return label + '(' + item.xLabel + ', ' + item.yLabel + ')';\n };\n } else if (chartType === \"bubble\") {\n options.tooltips.callbacks.label = function (item, data) {\n var label = data.datasets[item.datasetIndex].label || '';\n\n if (label) {\n label += ': ';\n }\n\n var dataPoint = data.datasets[item.datasetIndex].data[item.index];\n return label + '(' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.v + ')';\n };\n } else if (chartType === \"pie\") {\n // need to use separate label for pie charts\n options.tooltips.callbacks.label = function (tooltipItem, data) {\n var dataLabel = data.labels[tooltipItem.index];\n var value = ': ';\n\n if (isArray(dataLabel)) {\n // show value on first line of multiline label\n // need to clone because we are changing the value\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return formatValue(dataLabel, data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index], formatOptions);\n };\n } else {\n var valueLabel = chartType === \"bar\" ? \"xLabel\" : \"yLabel\";\n\n options.tooltips.callbacks.label = function (tooltipItem, data) {\n var label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n if (label) {\n label += ': ';\n }\n\n return formatValue(label, tooltipItem[valueLabel], formatOptions);\n };\n }\n }\n };\n\n var jsOptions = jsOptionsFunc(merge(baseOptions, defaultOptions), hideLegend, setTitle, setMin, setMax, setStacked, setXtitle, setYtitle);\n\n var createDataTable = function createDataTable(chart, options, chartType, library) {\n var datasets = [];\n var labels = [];\n var colors = chart.options.colors || defaultColors;\n var day = true;\n var week = true;\n var dayOfWeek;\n var month = true;\n var year = true;\n var hour = true;\n var minute = true;\n var series = chart.data;\n var max = 0;\n\n if (chartType === \"bubble\") {\n for (var i$1 = 0; i$1 < series.length; i$1++) {\n var s$1 = series[i$1];\n\n for (var j$1 = 0; j$1 < s$1.data.length; j$1++) {\n if (s$1.data[j$1][2] > max) {\n max = s$1.data[j$1][2];\n }\n }\n }\n }\n\n var i,\n j,\n s,\n d,\n key,\n rows = [],\n rows2 = [];\n\n if (chartType === \"bar\" || chartType === \"column\" || chart.xtype !== \"number\" && chart.xtype !== \"bubble\") {\n var sortedLabels = [];\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n key = chart.xtype == \"datetime\" ? d[0].getTime() : d[0];\n\n if (!rows[key]) {\n rows[key] = new Array(series.length);\n }\n\n rows[key][i] = toFloat(d[1]);\n\n if (sortedLabels.indexOf(key) === -1) {\n sortedLabels.push(key);\n }\n }\n }\n\n if (chart.xtype === \"datetime\" || chart.xtype === \"number\") {\n sortedLabels.sort(sortByNumber);\n }\n\n for (j = 0; j < series.length; j++) {\n rows2.push([]);\n }\n\n var value;\n var k;\n\n for (k = 0; k < sortedLabels.length; k++) {\n i = sortedLabels[k];\n\n if (chart.xtype === \"datetime\") {\n value = new Date(toFloat(i)); // TODO make this efficient\n\n day = day && isDay(value);\n\n if (!dayOfWeek) {\n dayOfWeek = value.getDay();\n }\n\n week = week && isWeek(value, dayOfWeek);\n month = month && isMonth(value);\n year = year && isYear(value);\n hour = hour && isHour(value);\n minute = minute && isMinute(value);\n } else {\n value = i;\n }\n\n labels.push(value);\n\n for (j = 0; j < series.length; j++) {\n // Chart.js doesn't like undefined\n rows2[j].push(rows[i][j] === undefined ? null : rows[i][j]);\n }\n }\n } else {\n for (var i$2 = 0; i$2 < series.length; i$2++) {\n var s$2 = series[i$2];\n var d$1 = [];\n\n for (var j$2 = 0; j$2 < s$2.data.length; j$2++) {\n var point = {\n x: toFloat(s$2.data[j$2][0]),\n y: toFloat(s$2.data[j$2][1])\n };\n\n if (chartType === \"bubble\") {\n point.r = toFloat(s$2.data[j$2][2]) * 20 / max; // custom attribute, for tooltip\n\n point.v = s$2.data[j$2][2];\n }\n\n d$1.push(point);\n }\n\n rows2.push(d$1);\n }\n }\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n var color = s.color || colors[i];\n var backgroundColor = chartType !== \"line\" ? addOpacity(color, 0.5) : color;\n var dataset = {\n label: s.name || \"\",\n data: rows2[i],\n fill: chartType === \"area\",\n borderColor: color,\n backgroundColor: backgroundColor,\n pointBackgroundColor: color,\n borderWidth: 2,\n pointHoverBackgroundColor: color\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.lineTension = 0;\n }\n\n var points = seriesOption(chart, s, \"points\");\n\n if (points === false) {\n dataset.pointRadius = 0;\n dataset.pointHitRadius = 5;\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 // hacky check for Chart.js >= 2.9.0\n // https://github.com/chartjs/Chart.js/compare/v2.8.0...v2.9.0\n var gte29 = (\"math\" in library.helpers);\n var ticksKey = gte29 ? \"ticks\" : \"time\";\n\n if (notnull(xmin)) {\n options.scales.xAxes[0][ticksKey].min = toDate(xmin).getTime();\n }\n\n if (notnull(xmax)) {\n options.scales.xAxes[0][ticksKey].max = toDate(xmax).getTime();\n }\n } else if (chart.xtype === \"number\") {\n if (notnull(xmin)) {\n options.scales.xAxes[0].ticks.min = xmin;\n }\n\n if (notnull(xmax)) {\n options.scales.xAxes[0].ticks.max = xmax;\n }\n } // for empty datetime chart\n\n\n if (chart.xtype === \"datetime\" && 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 day = false;\n week = false;\n month = false;\n year = false;\n hour = false;\n minute = false;\n }\n\n if (chart.xtype === \"datetime\" && 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 (i = 1; i < labels.length; i++) {\n var value$1 = labels[i].getTime();\n\n if (value$1 < minTime) {\n minTime = value$1;\n }\n\n if (value$1 > maxTime) {\n maxTime = value$1;\n }\n }\n\n var timeDiff = (maxTime - minTime) / (86400 * 1000.0);\n\n if (!options.scales.xAxes[0].time.unit) {\n var step;\n\n if (year || timeDiff > 365 * 10) {\n options.scales.xAxes[0].time.unit = \"year\";\n step = 365;\n } else if (month || timeDiff > 30 * 10) {\n options.scales.xAxes[0].time.unit = \"month\";\n step = 30;\n } else if (day || timeDiff > 10) {\n options.scales.xAxes[0].time.unit = \"day\";\n step = 1;\n } else if (hour || timeDiff > 0.5) {\n options.scales.xAxes[0].time.displayFormats = {\n hour: \"MMM D, h a\"\n };\n options.scales.xAxes[0].time.unit = \"hour\";\n step = 1 / 24.0;\n } else if (minute) {\n options.scales.xAxes[0].time.displayFormats = {\n minute: \"h:mm a\"\n };\n options.scales.xAxes[0].time.unit = \"minute\";\n step = 1 / 24.0 / 60.0;\n }\n\n if (step && timeDiff > 0) {\n var unitStepSize = Math.ceil(timeDiff / step / (chart.element.offsetWidth / 100.0));\n\n if (week && step === 1) {\n unitStepSize = Math.ceil(unitStepSize / 7.0) * 7;\n }\n\n options.scales.xAxes[0].time.unitStepSize = unitStepSize;\n }\n }\n\n if (!options.scales.xAxes[0].time.tooltipFormat) {\n if (day) {\n options.scales.xAxes[0].time.tooltipFormat = \"ll\";\n } else if (hour) {\n options.scales.xAxes[0].time.tooltipFormat = \"MMM D, h a\";\n } else if (minute) {\n options.scales.xAxes[0].time.tooltipFormat = \"h:mm a\";\n }\n }\n }\n\n var data = {\n labels: labels,\n datasets: datasets\n };\n return data;\n };\n\n var defaultExport = function defaultExport(library) {\n this.name = \"chartjs\";\n this.library = library;\n };\n\n defaultExport.prototype.renderLineChart = function renderLineChart(chart, chartType) {\n var chartOptions = {}; // fix for https://github.com/chartjs/Chart.js/issues/2441\n\n if (!chart.options.max && allZeros(chart.data)) {\n chartOptions.max = 1;\n }\n\n var options = jsOptions(chart, merge(chartOptions, chart.options));\n setFormatOptions(chart, options, chartType);\n var data = createDataTable(chart, options, chartType || \"line\", this.library);\n\n if (chart.xtype === \"number\") {\n options.scales.xAxes[0].type = \"linear\";\n options.scales.xAxes[0].position = \"bottom\";\n } else {\n options.scales.xAxes[0].type = chart.xtype === \"string\" ? \"category\" : \"time\";\n }\n\n this.drawChart(chart, \"line\", data, options);\n };\n\n defaultExport.prototype.renderPieChart = function renderPieChart(chart) {\n var options = merge({}, baseOptions);\n\n if (chart.options.donut) {\n options.cutoutPercentage = 50;\n }\n\n if (\"legend\" in chart.options) {\n hideLegend(options, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle(options, chart.options.title);\n }\n\n options = merge(options, chart.options.library || {});\n setFormatOptions(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\n defaultExport.prototype.renderColumnChart = function renderColumnChart(chart, chartType) {\n var options;\n\n if (chartType === \"bar\") {\n var barOptions = merge(baseOptions, defaultOptions);\n delete barOptions.scales.yAxes[0].ticks.maxTicksLimit;\n options = jsOptionsFunc(barOptions, hideLegend, setTitle, setBarMin, setBarMax, setStacked, setXtitle, setYtitle)(chart, chart.options);\n } else {\n options = jsOptions(chart, chart.options);\n }\n\n setFormatOptions(chart, options, chartType);\n var data = createDataTable(chart, options, \"column\", this.library);\n\n if (chartType !== \"bar\") {\n setLabelSize(chart, data, options);\n }\n\n this.drawChart(chart, chartType === \"bar\" ? \"horizontalBar\" : \"bar\", data, options);\n };\n\n defaultExport.prototype.renderAreaChart = function renderAreaChart(chart) {\n this.renderLineChart(chart, \"area\");\n };\n\n defaultExport.prototype.renderBarChart = function renderBarChart(chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport.prototype.renderScatterChart = function renderScatterChart(chart, chartType) {\n chartType = chartType || \"scatter\";\n var options = jsOptions(chart, chart.options);\n setFormatOptions(chart, options, chartType);\n\n if (!(\"showLines\" in options)) {\n options.showLines = false;\n }\n\n var data = createDataTable(chart, options, chartType, this.library);\n options.scales.xAxes[0].type = \"linear\";\n options.scales.xAxes[0].position = \"bottom\";\n this.drawChart(chart, chartType, data, options);\n };\n\n defaultExport.prototype.renderBubbleChart = function renderBubbleChart(chart) {\n this.renderScatterChart(chart, \"bubble\");\n };\n\n defaultExport.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport.prototype.drawChart = function drawChart(chart, type, data, options) {\n this.destroy(chart);\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\n var 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 };\n\n var hideLegend$1 = function 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\n var setTitle$1 = function setTitle$1(options, title) {\n options.title.text = title;\n };\n\n var setMin$1 = function setMin$1(options, min) {\n options.yAxis.min = min;\n };\n\n var setMax$1 = function setMax$1(options, max) {\n options.yAxis.max = max;\n };\n\n var setStacked$1 = function 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\n var setXtitle$1 = function setXtitle$1(options, title) {\n options.xAxis.title.text = title;\n };\n\n var setYtitle$1 = function setYtitle$1(options, title) {\n options.yAxis.title.text = title;\n };\n\n var jsOptions$1 = jsOptionsFunc(defaultOptions$1, hideLegend$1, setTitle$1, setMin$1, setMax$1, setStacked$1, setXtitle$1, setYtitle$1);\n\n var setFormatOptions$1 = function setFormatOptions$1(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 };\n\n if (chartType !== \"pie\" && !options.yAxis.labels.formatter) {\n options.yAxis.labels.formatter = function () {\n return formatValue(\"\", this.value, formatOptions);\n };\n }\n\n if (!options.tooltip.pointFormatter) {\n options.tooltip.pointFormatter = function () {\n return '\\u25CF \" + formatValue(this.series.name + ': ', this.y, formatOptions) + '
';\n };\n }\n };\n\n var defaultExport$1 = function defaultExport(library) {\n this.name = \"highcharts\";\n this.library = library;\n };\n\n defaultExport$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 data,\n i,\n j;\n options.xAxis.type = chart.xtype === \"string\" ? \"category\" : chart.xtype === \"number\" ? \"linear\" : \"datetime\";\n\n if (!options.chart.type) {\n options.chart.type = chartType;\n }\n\n setFormatOptions$1(chart, options, chartType);\n var series = chart.data;\n\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n data = series[i].data;\n\n if (chart.xtype === \"datetime\") {\n for (j = 0; j < data.length; j++) {\n data[j][0] = data[j][0].getTime();\n }\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\n defaultExport$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\n defaultExport$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$1(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\n defaultExport$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 i,\n j,\n s,\n d,\n rows = [],\n categories = [];\n options.chart.type = chartType;\n setFormatOptions$1(chart, options, chartType);\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n\n for (j = 0; j < s.data.length; j++) {\n 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 d2;\n\n for (i = 0; i < series.length; i++) {\n d = [];\n\n for (j = 0; j < categories.length; j++) {\n d.push(rows[categories[j]][i] || 0);\n }\n\n d2 = {\n name: series[i].name || \"Value\",\n data: d\n };\n\n if (series[i].stack) {\n d2.stack = series[i].stack;\n }\n\n newSeries.push(d2);\n }\n\n this.drawChart(chart, newSeries, options);\n };\n\n defaultExport$1.prototype.renderBarChart = function renderBarChart(chart) {\n this.renderColumnChart(chart, \"bar\");\n };\n\n defaultExport$1.prototype.renderAreaChart = function renderAreaChart(chart) {\n this.renderLineChart(chart, \"areaspline\");\n };\n\n defaultExport$1.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.destroy();\n }\n };\n\n defaultExport$1.prototype.drawChart = function drawChart(chart, data, options) {\n this.destroy(chart);\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\n var loaded = {};\n var callbacks = []; // Set chart options\n\n var defaultOptions$2 = {\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\n var hideLegend$2 = function hideLegend$2(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\n var setTitle$2 = function setTitle$2(options, title) {\n options.title = title;\n options.titleTextStyle = {\n color: \"#333\",\n fontSize: \"20px\"\n };\n };\n\n var setMin$2 = function setMin$2(options, min) {\n options.vAxis.viewWindow.min = min;\n };\n\n var setMax$2 = function setMax$2(options, max) {\n options.vAxis.viewWindow.max = max;\n };\n\n var setBarMin$1 = function setBarMin$1(options, min) {\n options.hAxis.viewWindow.min = min;\n };\n\n var setBarMax$1 = function setBarMax$1(options, max) {\n options.hAxis.viewWindow.max = max;\n };\n\n var setStacked$2 = function setStacked$2(options, stacked) {\n options.isStacked = stacked ? stacked : false;\n };\n\n var setXtitle$2 = function setXtitle$2(options, title) {\n options.hAxis.title = title;\n options.hAxis.titleTextStyle.italic = false;\n };\n\n var setYtitle$2 = function setYtitle$2(options, title) {\n options.vAxis.title = title;\n options.vAxis.titleTextStyle.italic = false;\n };\n\n var jsOptions$2 = jsOptionsFunc(defaultOptions$2, hideLegend$2, setTitle$2, setMin$2, setMax$2, setStacked$2, setXtitle$2, setYtitle$2);\n\n var resize = function 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\n var defaultExport$2 = function defaultExport(library) {\n this.name = \"google\";\n this.library = library;\n };\n\n defaultExport$2.prototype.renderLineChart = function renderLineChart(chart) {\n var this$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$2(chart, chart.options, chartOptions);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"LineChart\", data, options);\n });\n };\n\n defaultExport$2.prototype.renderPieChart = function renderPieChart(chart) {\n var this$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$2(chartOptions, chart.options.legend);\n }\n\n if (chart.options.title) {\n setTitle$2(chartOptions, chart.options.title);\n }\n\n var options = merge(merge(defaultOptions$2, chartOptions), chart.options.library || {});\n var data = new this$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", \"Value\");\n data.addRows(chart.data);\n this$1.drawChart(chart, \"PieChart\", data, options);\n });\n };\n\n defaultExport$2.prototype.renderColumnChart = function renderColumnChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var options = jsOptions$2(chart, chart.options);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"ColumnChart\", data, options);\n });\n };\n\n defaultExport$2.prototype.renderBarChart = function renderBarChart(chart) {\n var this$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$2, hideLegend$2, setTitle$2, setBarMin$1, setBarMax$1, setStacked$2, setXtitle$2, setYtitle$2)(chart, chart.options, chartOptions);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"BarChart\", data, options);\n });\n };\n\n defaultExport$2.prototype.renderAreaChart = function renderAreaChart(chart) {\n var this$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$2(chart, chart.options, chartOptions);\n var data = this$1.createDataTable(chart.data, chart.xtype);\n this$1.drawChart(chart, \"AreaChart\", data, options);\n });\n };\n\n defaultExport$2.prototype.renderGeoChart = function renderGeoChart(chart) {\n var this$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$2, chartOptions), chart.options.library || {});\n var data = new this$1.library.visualization.DataTable();\n data.addColumn(\"string\", \"\");\n data.addColumn(\"number\", chart.options.label || \"Value\");\n data.addRows(chart.data);\n this$1.drawChart(chart, \"GeoChart\", data, options);\n });\n };\n\n defaultExport$2.prototype.renderScatterChart = function renderScatterChart(chart) {\n var this$1 = this;\n this.waitForLoaded(chart, function () {\n var chartOptions = {};\n var options = jsOptions$2(chart, chart.options, chartOptions);\n var series = chart.data,\n rows2 = [],\n i,\n j,\n data,\n d;\n\n for (i = 0; i < series.length; i++) {\n series[i].name = series[i].name || \"Value\";\n d = series[i].data;\n\n for (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 data = new this$1.library.visualization.DataTable();\n data.addColumn(\"number\", \"\");\n\n for (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n\n data.addRows(rows2);\n this$1.drawChart(chart, \"ScatterChart\", data, options);\n });\n };\n\n defaultExport$2.prototype.renderTimeline = function renderTimeline(chart) {\n var this$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$2, chartOptions), chart.options.library || {});\n var data = new this$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.drawChart(chart, \"Timeline\", data, options);\n });\n };\n\n defaultExport$2.prototype.destroy = function destroy(chart) {\n if (chart.chart) {\n chart.chart.clearChart();\n }\n };\n\n defaultExport$2.prototype.drawChart = function drawChart(chart, type, data, options) {\n this.destroy(chart);\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\n defaultExport$2.prototype.waitForLoaded = function waitForLoaded(chart, pack, callback) {\n var this$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.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\n defaultExport$2.prototype.runCallbacks = function runCallbacks() {\n var cb, call;\n\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n 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\n defaultExport$2.prototype.createDataTable = function createDataTable(series, columnType) {\n var i,\n j,\n s,\n d,\n key,\n rows = [],\n sortedLabels = [];\n\n for (i = 0; i < series.length; i++) {\n s = series[i];\n series[i].name = series[i].name || \"Value\";\n\n for (j = 0; j < s.data.length; j++) {\n d = s.data[j];\n 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] = toFloat(d[1]);\n }\n }\n\n var rows2 = [];\n var day = true;\n var value;\n\n for (j = 0; j < sortedLabels.length; j++) {\n i = sortedLabels[j];\n\n if (columnType === \"datetime\") {\n value = new Date(toFloat(i));\n day = day && isDay(value);\n } else if (columnType === \"number\") {\n value = toFloat(i);\n } else {\n value = i;\n }\n\n rows2.push([value].concat(rows[i]));\n }\n\n if (columnType === \"datetime\") {\n rows2.sort(sortByTime);\n } else if (columnType === \"number\") {\n rows2.sort(sortByNumberSeries);\n\n for (i = 0; i < rows2.length; i++) {\n rows2[i][0] = toStr(rows2[i][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 (i = 0; i < series.length; i++) {\n data.addColumn(\"number\", series[i].name);\n }\n\n data.addRows(rows2);\n return data;\n };\n\n var pendingRequests = [],\n runningRequests = 0,\n maxRequests = 4;\n\n function pushRequest(url, success, error) {\n pendingRequests.push([url, success, error]);\n runNext();\n }\n\n function 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\n function requestComplete() {\n runningRequests--;\n runNext();\n }\n\n function getJSON(url, success, error) {\n ajaxCall(url, success, function (jqXHR, textStatus, errorThrown) {\n var message = typeof errorThrown === \"string\" ? errorThrown : errorThrown.message;\n error(message);\n });\n }\n\n function ajaxCall(url, success, error) {\n var $ = window.jQuery || window.Zepto || window.$;\n\n if ($ && $.ajax) {\n $.ajax({\n dataType: \"json\",\n url: url,\n success: success,\n error: error,\n complete: requestComplete\n });\n } else {\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), xhr.statusText, xhr);\n } else {\n error(xhr, \"error\", xhr.statusText);\n }\n };\n\n xhr.send();\n }\n }\n\n var config = {};\n var adapters = []; // helpers\n\n function setText(element, text) {\n if (document.body.innerText) {\n element.innerText = text;\n } else {\n element.textContent = text;\n }\n } // TODO remove prefix for all messages\n\n\n function 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\n function errorCatcher(chart) {\n try {\n chart.__render();\n } catch (err) {\n chartError(chart.element, err.message);\n throw err;\n }\n }\n\n function fetchDataSource(chart, dataSource) {\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\n function addDownloadButton(chart) {\n var element = chart.element;\n var link = document.createElement(\"a\");\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 link.download = download.filename || \"chart.png\"; // https://caniuse.com/download\n\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\");\n image.alt = \"Download\";\n image.style.border = \"none\"; // icon from font-awesome\n // http://fa2png.io/\n\n image.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABCFBMVEUAAADMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMywEsqxAAAAV3RSTlMAAQIDBggJCgsMDQ4PERQaHB0eISIjJCouLzE0OTo/QUJHSUpLTU5PUllhYmltcHh5foWLjI+SlaCio6atr7S1t7m6vsHHyM7R2tze5Obo7fHz9ff5+/1hlxK2AAAA30lEQVQYGUXBhVYCQQBA0TdYWAt2d3d3YWAHyur7/z9xgD16Lw0DW+XKx+1GgX+FRzM3HWQWrHl5N/oapW5RPe0PkBu+UYeICvozTWZVK23Ao04B79oJrOsJDOoxkZoQPWgX29pHpCZEk7rEvQYiNSFq1UMqvlCjJkRBS1R8hb00Vb/TajtBL7nTHE1X1vyMQF732dQhyF2o6SAwrzP06iUQzvwsArlnzcOdrgBhJyHa1QOgO9U1GsKuvjUTjavliZYQ8nNPapG6sap/3nrIdJ6bOWzmX/fy0XVpfzZP3S8OJT3g9EEiJwAAAABJRU5ErkJggg==\";\n link.appendChild(image);\n element.style.position = \"relative\";\n chart.__downloadAttached = true; // mouseenter\n\n chart.__enterEvent = addEvent(element, \"mouseover\", function (e) {\n var related = e.relatedTarget; // check download option again to ensure it wasn't changed\n\n if ((!related || related !== this && !childOf(this, related)) && chart.options.download) {\n link.href = chart.toImage(download);\n element.appendChild(link);\n }\n }); // mouseleave\n\n chart.__leaveEvent = addEvent(element, \"mouseout\", function (e) {\n var related = e.relatedTarget;\n\n if (!related || related !== this && !childOf(this, related)) {\n if (link.parentNode) {\n link.parentNode.removeChild(link);\n }\n }\n });\n } // https://stackoverflow.com/questions/10149963/adding-event-listener-cross-browser\n\n\n function addEvent(elem, event, fn) {\n if (elem.addEventListener) {\n elem.addEventListener(event, fn, false);\n return fn;\n } else {\n var fn2 = function fn2() {\n // set the this pointer same as addEventListener when fn is called\n return fn.call(elem, window.event);\n };\n\n elem.attachEvent(\"on\" + event, fn2);\n return fn2;\n }\n }\n\n function removeEvent(elem, event, fn) {\n if (elem.removeEventListener) {\n elem.removeEventListener(event, fn, false);\n } else {\n elem.detachEvent(\"on\" + event, fn);\n }\n } // https://gist.github.com/shawnbot/4166283\n\n\n function childOf(p, c) {\n if (p === c) {\n return false;\n }\n\n while (c && c !== p) {\n c = c.parentNode;\n }\n\n return c === p;\n }\n\n function getAdapterType(library) {\n if (library) {\n if (library.product === \"Highcharts\") {\n return defaultExport$1;\n } else if (library.charts) {\n return defaultExport$2;\n } else if (isFunction(library)) {\n return defaultExport;\n }\n }\n\n throw new Error(\"Unknown adapter\");\n }\n\n function addAdapter(library) {\n var adapterType = getAdapterType(library);\n var adapter = new adapterType(library);\n\n if (adapters.indexOf(adapter) === -1) {\n adapters.push(adapter);\n }\n }\n\n function 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 }\n\n function 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\n function renderChart(chartType, chart) {\n if (chart.options.messages && chart.options.messages.empty && dataEmpty(chart.data, chartType)) {\n setText(chart.element, chart.options.messages.empty);\n } else {\n callAdapter(chartType, chart);\n\n if (chart.options.download && !chart.__downloadAttached && chart.adapter === \"chartjs\") {\n addDownloadButton(chart);\n }\n }\n } // TODO remove chartType if cross-browser way\n // to get the name of the chart class\n\n\n function callAdapter(chartType, chart) {\n var i, adapter, fnName, adapterName;\n fnName = \"render\" + chartType;\n adapterName = chart.options.adapter;\n loadAdapters();\n\n for (i = 0; i < adapters.length; i++) {\n 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 } // process data\n\n\n var toFormattedKey = function toFormattedKey(key, keyType) {\n if (keyType === \"number\") {\n key = toFloat(key);\n } else if (keyType === \"datetime\") {\n key = toDate(key);\n } else {\n key = toStr(key);\n }\n\n return key;\n };\n\n var formatSeriesData = function formatSeriesData(data, keyType) {\n var r = [],\n key,\n j;\n\n for (j = 0; j < data.length; j++) {\n if (keyType === \"bubble\") {\n r.push([toFloat(data[j][0]), toFloat(data[j][1]), toFloat(data[j][2])]);\n } else {\n key = toFormattedKey(data[j][0], keyType);\n r.push([key, toFloat(data[j][1])]);\n }\n }\n\n if (keyType === \"datetime\") {\n r.sort(sortByTime);\n } else if (keyType === \"number\") {\n r.sort(sortByNumberSeries);\n }\n\n return r;\n };\n\n function 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\n function detectXTypeWithFunction(series, func) {\n var i, j, data;\n\n for (i = 0; i < series.length; i++) {\n data = toArr(series[i].data);\n\n for (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\n function copySeries(series) {\n var newSeries = [],\n i,\n j;\n\n for (i = 0; i < series.length; i++) {\n var copy = {};\n\n for (j in series[i]) {\n if (series[i].hasOwnProperty(j)) {\n copy[j] = series[i][j];\n }\n }\n\n newSeries.push(copy);\n }\n\n return newSeries;\n }\n\n function processSeries(chart, keyType, noDatetime) {\n var i;\n var opts = chart.options;\n var series = chart.rawData; // see if one series or multiple\n\n if (!isArray(series) || _typeof(series[0]) !== \"object\" || isArray(series[0])) {\n series = [{\n name: opts.label,\n data: series\n }];\n chart.hideLegend = true;\n } else {\n chart.hideLegend = false;\n } // convert to array\n // must come before dataEmpty check\n\n\n series = copySeries(series);\n\n for (i = 0; i < series.length; i++) {\n series[i].data = toArr(series[i].data);\n }\n\n chart.xtype = keyType ? keyType : opts.discrete ? \"string\" : detectXType(series, noDatetime, opts); // right format\n\n for (i = 0; i < series.length; i++) {\n series[i].data = formatSeriesData(series[i].data, chart.xtype);\n }\n\n return series;\n }\n\n function processSimple(chart) {\n var perfectData = toArr(chart.rawData),\n i;\n\n for (i = 0; i < perfectData.length; i++) {\n perfectData[i] = [toStr(perfectData[i][0]), toFloat(perfectData[i][1])];\n }\n\n return perfectData;\n } // define classes\n\n\n var Chart = function Chart(element, dataSource, options) {\n var elementId;\n\n if (typeof element === \"string\") {\n elementId = element;\n element = document.getElementById(element);\n\n if (!element) {\n throw new Error(\"No element with id \" + elementId);\n }\n }\n\n this.element = element;\n this.options = merge(Chartkick.options, options || {});\n this.dataSource = dataSource;\n Chartkick.charts[element.id] = this;\n fetchDataSource(this, dataSource);\n\n if (this.options.refresh) {\n this.startRefresh();\n }\n };\n\n Chart.prototype.getElement = function getElement() {\n return this.element;\n };\n\n Chart.prototype.getDataSource = function getDataSource() {\n return this.dataSource;\n };\n\n Chart.prototype.getData = function getData() {\n return this.data;\n };\n\n Chart.prototype.getOptions = function getOptions() {\n return this.options;\n };\n\n Chart.prototype.getChartObject = function getChartObject() {\n return this.chart;\n };\n\n Chart.prototype.getAdapter = function getAdapter() {\n return this.adapter;\n };\n\n Chart.prototype.updateData = function updateData(dataSource, options) {\n this.dataSource = dataSource;\n\n if (options) {\n this.__updateOptions(options);\n }\n\n fetchDataSource(this, dataSource);\n };\n\n Chart.prototype.setOptions = function setOptions(options) {\n this.__updateOptions(options);\n\n this.redraw();\n };\n\n Chart.prototype.redraw = function redraw() {\n fetchDataSource(this, this.rawData);\n };\n\n Chart.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\n Chart.prototype.startRefresh = function startRefresh() {\n var this$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.refreshData();\n }, refresh * 1000);\n } else {\n throw new Error(\"No refresh interval\");\n }\n }\n };\n\n Chart.prototype.stopRefresh = function stopRefresh() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n };\n\n Chart.prototype.toImage = function toImage(download) {\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.chart.canvas;\n var ctx = this.chart.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 // TODO throw error in next major version\n // throw new Error(\"Feature only available for Chart.js\");\n return null;\n }\n };\n\n Chart.prototype.destroy = function destroy() {\n if (this.__adapterObject) {\n this.__adapterObject.destroy(this);\n }\n\n if (this.__enterEvent) {\n removeEvent(this.element, \"mouseover\", this.__enterEvent);\n }\n\n if (this.__leaveEvent) {\n removeEvent(this.element, \"mouseout\", this.__leaveEvent);\n }\n };\n\n Chart.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\n Chart.prototype.__render = function __render() {\n this.data = this.__processData();\n renderChart(this.__chartName(), this);\n };\n\n Chart.prototype.__config = function __config() {\n return config;\n };\n\n var 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\n var 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\n var 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\n var 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\n var 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\n var 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\n var 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\n var 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\n var 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 i,\n data = this.rawData;\n\n for (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\n var Chartkick = {\n LineChart: LineChart,\n PieChart: PieChart,\n ColumnChart: ColumnChart,\n BarChart: BarChart,\n AreaChart: AreaChart,\n GeoChart: GeoChart,\n ScatterChart: ScatterChart,\n BubbleChart: BubbleChart,\n Timeline: Timeline,\n charts: {},\n configure: function configure(options) {\n for (var key in options) {\n if (options.hasOwnProperty(key)) {\n 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 (Chartkick.charts.hasOwnProperty(chartId)) {\n callback(Chartkick.charts[chartId]);\n }\n }\n },\n config: config,\n options: {},\n adapters: adapters,\n addAdapter: addAdapter,\n use: function use(adapter) {\n addAdapter(adapter);\n return Chartkick;\n }\n }; // not ideal, but allows for simpler integration\n\n if (typeof window !== \"undefined\" && !window.Chartkick) {\n window.Chartkick = Chartkick;\n } // backwards compatibility for esm require\n\n\n Chartkick.default = Chartkick;\n return Chartkick;\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, '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 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 = confirm(message);\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, 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 element = e instanceof Event ? e.target : e;\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 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 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 }).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);","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 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 _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\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* chartjs-plugin-annotation v3.0.1\n* https://www.chartjs.org/chartjs-plugin-annotation/index\n * (c) 2023 chartjs-plugin-annotation Contributors\n * Released under the MIT License\n */\nimport { Element, defaults, Animations, Chart } from 'chart.js';\nimport { distanceBetweenPoints, defined, isFunction, callback, isObject, valueOrDefault, toRadians, isArray, toFont, addRoundedRectPath, toTRBLCorners, QUARTER_PI, PI, HALF_PI, TWO_THIRDS_PI, TAU, isNumber, RAD_PER_DEG, toPadding, isFinite, toDegrees, clipArea, unclipArea } from 'chart.js/helpers';\n/**\n * @typedef { import(\"chart.js\").ChartEvent } ChartEvent\n * @typedef { import('../../types/element').AnnotationElement } AnnotationElement\n */\n\nvar interaction = {\n modes: {\n /**\n * Point mode returns all elements that hit test based on the event position\n * @param {Object} state - the state of the plugin\n * @param {ChartEvent} event - the event we are find things at\n * @return {AnnotationElement[]} - elements that are found\n */\n point: function point(state, event) {\n return filterElements(state, event, {\n intersect: true\n });\n },\n\n /**\n * Nearest mode returns the element closest to the event position\n * @param {Object} state - the state of the plugin\n * @param {ChartEvent} event - the event we are find things at\n * @param {Object} options - interaction options to use\n * @return {AnnotationElement[]} - elements that are found (only 1 element)\n */\n nearest: function nearest(state, event, options) {\n return getNearestItem(state, event, options);\n },\n\n /**\n * x mode returns the elements that hit-test at the current x coordinate\n * @param {Object} state - the state of the plugin\n * @param {ChartEvent} event - the event we are find things at\n * @param {Object} options - interaction options to use\n * @return {AnnotationElement[]} - elements that are found\n */\n x: function x(state, event, options) {\n return filterElements(state, event, {\n intersect: options.intersect,\n axis: 'x'\n });\n },\n\n /**\n * y mode returns the elements that hit-test at the current y coordinate\n * @param {Object} state - the state of the plugin\n * @param {ChartEvent} event - the event we are find things at\n * @param {Object} options - interaction options to use\n * @return {AnnotationElement[]} - elements that are found\n */\n y: function y(state, event, options) {\n return filterElements(state, event, {\n intersect: options.intersect,\n axis: 'y'\n });\n }\n }\n};\n/**\n * Returns all elements that hit test based on the event position\n * @param {Object} state - the state of the plugin\n * @param {ChartEvent} event - the event we are find things at\n * @param {Object} options - interaction options to use\n * @return {AnnotationElement[]} - elements that are found\n */\n\nfunction getElements(state, event, options) {\n var mode = interaction.modes[options.mode] || interaction.modes.nearest;\n return mode(state, event, options);\n}\n\nfunction inRangeByAxis(element, event, axis) {\n if (axis !== 'x' && axis !== 'y') {\n return element.inRange(event.x, event.y, 'x', true) || element.inRange(event.x, event.y, 'y', true);\n }\n\n return element.inRange(event.x, event.y, axis, true);\n}\n\nfunction getPointByAxis(event, center, axis) {\n if (axis === 'x') {\n return {\n x: event.x,\n y: center.y\n };\n } else if (axis === 'y') {\n return {\n x: center.x,\n y: event.y\n };\n }\n\n return center;\n}\n\nfunction filterElements(state, event, options) {\n return state.visibleElements.filter(function (element) {\n return options.intersect ? element.inRange(event.x, event.y) : inRangeByAxis(element, event, options.axis);\n });\n}\n\nfunction getNearestItem(state, event, options) {\n var minDistance = Number.POSITIVE_INFINITY;\n return filterElements(state, event, options).reduce(function (nearestItems, element) {\n var center = element.getCenterPoint();\n var evenPoint = getPointByAxis(event, center, options.axis);\n var distance = distanceBetweenPoints(event, evenPoint);\n\n if (distance < minDistance) {\n nearestItems = [element];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n nearestItems.push(element);\n }\n\n return nearestItems;\n }, []).sort(function (a, b) {\n return a._index - b._index;\n }).slice(0, 1); // return only the top item;\n}\n\nvar isOlderPart = function isOlderPart(act, req) {\n return req > act || act.length > req.length && act.slice(0, req.length) === req;\n};\n/**\n * @typedef { import('chart.js').Point } Point\n * @typedef { import('chart.js').InteractionAxis } InteractionAxis\n * @typedef { import('../../types/element').AnnotationElement } AnnotationElement\n */\n\n\nvar EPSILON = 0.001;\n\nvar clamp = function clamp(x, from, to) {\n return Math.min(to, Math.max(from, x));\n};\n/**\n * @param {Object} obj\n * @param {number} from\n * @param {number} to\n * @returns {Object}\n */\n\n\nfunction clampAll(obj, from, to) {\n for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n obj[key] = clamp(obj[key], from, to);\n }\n\n return obj;\n}\n/**\n * @param {Point} point\n * @param {Point} center\n * @param {number} radius\n * @param {number} borderWidth\n * @returns {boolean}\n */\n\n\nfunction inPointRange(point, center, radius, borderWidth) {\n if (!point || !center || radius <= 0) {\n return false;\n }\n\n var hBorderWidth = borderWidth / 2;\n return Math.pow(point.x - center.x, 2) + Math.pow(point.y - center.y, 2) <= Math.pow(radius + hBorderWidth, 2);\n}\n/**\n * @param {Point} point\n * @param {{x: number, y: number, x2: number, y2: number}} rect\n * @param {InteractionAxis} axis\n * @param {number} borderWidth\n * @returns {boolean}\n */\n\n\nfunction inBoxRange(point, _ref, axis, borderWidth) {\n var x = _ref.x,\n y = _ref.y,\n x2 = _ref.x2,\n y2 = _ref.y2;\n var hBorderWidth = borderWidth / 2;\n var inRangeX = point.x >= x - hBorderWidth - EPSILON && point.x <= x2 + hBorderWidth + EPSILON;\n var inRangeY = point.y >= y - hBorderWidth - EPSILON && point.y <= y2 + hBorderWidth + EPSILON;\n\n if (axis === 'x') {\n return inRangeX;\n } else if (axis === 'y') {\n return inRangeY;\n }\n\n return inRangeX && inRangeY;\n}\n/**\n * @param {AnnotationElement} element\n * @param {boolean} useFinalPosition\n * @returns {Point}\n */\n\n\nfunction getElementCenterPoint(element, useFinalPosition) {\n var _element$getProps = element.getProps(['centerX', 'centerY'], useFinalPosition),\n centerX = _element$getProps.centerX,\n centerY = _element$getProps.centerY;\n\n return {\n x: centerX,\n y: centerY\n };\n}\n/**\n * @param {string} pkg\n * @param {string} min\n * @param {string} ver\n * @param {boolean} [strict=true]\n * @returns {boolean}\n */\n\n\nfunction requireVersion(pkg, min, ver) {\n var strict = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var parts = ver.split('.');\n var i = 0;\n\n var _iterator = _createForOfIteratorHelper(min.split('.')),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var req = _step.value;\n var act = parts[i++];\n\n if (parseInt(req, 10) < parseInt(act, 10)) {\n break;\n }\n\n if (isOlderPart(act, req)) {\n if (strict) {\n throw new Error(\"\".concat(pkg, \" v\").concat(ver, \" is not supported. v\").concat(min, \" or newer is required.\"));\n } else {\n return false;\n }\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return true;\n}\n\nvar isPercentString = function isPercentString(s) {\n return typeof s === 'string' && s.endsWith('%');\n};\n\nvar toPercent = function toPercent(s) {\n return parseFloat(s) / 100;\n};\n\nvar toPositivePercent = function toPositivePercent(s) {\n return clamp(toPercent(s), 0, 1);\n};\n\nvar boxAppering = function boxAppering(x, y) {\n return {\n x: x,\n y: y,\n x2: x,\n y2: y,\n width: 0,\n height: 0\n };\n};\n\nvar defaultInitAnimation = {\n box: function box(properties) {\n return boxAppering(properties.centerX, properties.centerY);\n },\n ellipse: function ellipse(properties) {\n return {\n centerX: properties.centerX,\n centerY: properties.centerX,\n radius: 0,\n width: 0,\n height: 0\n };\n },\n label: function label(properties) {\n return boxAppering(properties.centerX, properties.centerY);\n },\n line: function line(properties) {\n return boxAppering(properties.x, properties.y);\n },\n point: function point(properties) {\n return {\n centerX: properties.centerX,\n centerY: properties.centerY,\n radius: 0,\n width: 0,\n height: 0\n };\n },\n polygon: function polygon(properties) {\n return boxAppering(properties.centerX, properties.centerY);\n }\n};\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import('../../types/element').AnnotationBoxModel } AnnotationBoxModel\n * @typedef { import('../../types/element').AnnotationElement } AnnotationElement\n * @typedef { import('../../types/options').AnnotationPointCoordinates } AnnotationPointCoordinates\n * @typedef { import('../../types/label').CoreLabelOptions } CoreLabelOptions\n * @typedef { import('../../types/label').LabelPositionObject } LabelPositionObject\n */\n\n/**\n * @param {number} size\n * @param {number|string} position\n * @returns {number}\n */\n\nfunction getRelativePosition(size, position) {\n if (position === 'start') {\n return 0;\n }\n\n if (position === 'end') {\n return size;\n }\n\n if (isPercentString(position)) {\n return toPositivePercent(position) * size;\n }\n\n return size / 2;\n}\n/**\n * @param {number} size\n * @param {number|string} value\n * @param {boolean} [positivePercent=true]\n * @returns {number}\n */\n\n\nfunction getSize(size, value) {\n var positivePercent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n if (typeof value === 'number') {\n return value;\n } else if (isPercentString(value)) {\n return (positivePercent ? toPositivePercent(value) : toPercent(value)) * size;\n }\n\n return size;\n}\n/**\n * @param {{x: number, width: number}} size\n * @param {CoreLabelOptions} options\n * @returns {number}\n */\n\n\nfunction calculateTextAlignment(size, options) {\n var x = size.x,\n width = size.width;\n var textAlign = options.textAlign;\n\n if (textAlign === 'center') {\n return x + width / 2;\n } else if (textAlign === 'end' || textAlign === 'right') {\n return x + width;\n }\n\n return x;\n}\n/**\n * @param {{x: number|string, y: number|string}|string|number} value\n * @param {string|number} defaultValue\n * @returns {{x: number|string, y: number|string}}\n */\n\n\nfunction toPosition(value) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'center';\n\n if (isObject(value)) {\n return {\n x: valueOrDefault(value.x, defaultValue),\n y: valueOrDefault(value.y, defaultValue)\n };\n }\n\n value = valueOrDefault(value, defaultValue);\n return {\n x: value,\n y: value\n };\n}\n/**\n * @param {AnnotationPointCoordinates} options\n * @returns {boolean}\n */\n\n\nfunction isBoundToPoint(options) {\n return options && (defined(options.xValue) || defined(options.yValue));\n}\n/**\n * @param {Chart} chart\n * @param {AnnotationBoxModel} properties\n * @param {CoreAnnotationOptions} options\n * @returns {AnnotationElement}\n */\n\n\nfunction initAnimationProperties(chart, properties, options) {\n var initAnim = options.init;\n\n if (!initAnim) {\n return;\n } else if (initAnim === true) {\n return applyDefault(properties, options);\n }\n\n return execCallback(chart, properties, options);\n}\n/**\n * @param {Object} options\n * @param {Array} hooks\n * @param {Object} hooksContainer\n * @returns {boolean}\n */\n\n\nfunction loadHooks(options, hooks, hooksContainer) {\n var activated = false;\n hooks.forEach(function (hook) {\n if (isFunction(options[hook])) {\n activated = true;\n hooksContainer[hook] = options[hook];\n } else if (defined(hooksContainer[hook])) {\n delete hooksContainer[hook];\n }\n });\n return activated;\n}\n\nfunction applyDefault(properties, options) {\n var type = options.type || 'line';\n return defaultInitAnimation[type](properties);\n}\n\nfunction execCallback(chart, properties, options) {\n var result = callback(options.init, [{\n chart: chart,\n properties: properties,\n options: options\n }]);\n\n if (result === true) {\n return applyDefault(properties, options);\n } else if (isObject(result)) {\n return result;\n }\n}\n\nvar widthCache = new Map();\n\nvar notRadius = function notRadius(radius) {\n return isNaN(radius) || radius <= 0;\n};\n\nvar fontsKey = function fontsKey(fonts) {\n return fonts.reduce(function (prev, item) {\n prev += item.string;\n return prev;\n }, '');\n};\n/**\n * @typedef { import('chart.js').Point } Point\n * @typedef { import('../../types/label').CoreLabelOptions } CoreLabelOptions\n * @typedef { import('../../types/options').PointAnnotationOptions } PointAnnotationOptions\n */\n\n/**\n * Determine if content is an image or a canvas.\n * @param {*} content\n * @returns boolean|undefined\n * @todo move this function to chart.js helpers\n */\n\n\nfunction isImageOrCanvas(content) {\n if (content && _typeof(content) === 'object') {\n var type = content.toString();\n return type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]';\n }\n}\n/**\n * Set the translation on the canvas if the rotation must be applied.\n * @param {CanvasRenderingContext2D} ctx - chart canvas context\n * @param {Point} point - the point of translation\n * @param {number} rotation - rotation (in degrees) to apply\n */\n\n\nfunction translate(ctx, _ref2, rotation) {\n var x = _ref2.x,\n y = _ref2.y;\n\n if (rotation) {\n ctx.translate(x, y);\n ctx.rotate(toRadians(rotation));\n ctx.translate(-x, -y);\n }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {Object} options\n * @returns {boolean|undefined}\n */\n\n\nfunction setBorderStyle(ctx, options) {\n if (options && options.borderWidth) {\n ctx.lineCap = options.borderCapStyle;\n ctx.setLineDash(options.borderDash);\n ctx.lineDashOffset = options.borderDashOffset;\n ctx.lineJoin = options.borderJoinStyle;\n ctx.lineWidth = options.borderWidth;\n ctx.strokeStyle = options.borderColor;\n return true;\n }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {Object} options\n */\n\n\nfunction setShadowStyle(ctx, options) {\n ctx.shadowColor = options.backgroundShadowColor;\n ctx.shadowBlur = options.shadowBlur;\n ctx.shadowOffsetX = options.shadowOffsetX;\n ctx.shadowOffsetY = options.shadowOffsetY;\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {CoreLabelOptions} options\n * @returns {{width: number, height: number}}\n */\n\n\nfunction measureLabelSize(ctx, options) {\n var content = options.content;\n\n if (isImageOrCanvas(content)) {\n return {\n width: getSize(content.width, options.width),\n height: getSize(content.height, options.height)\n };\n }\n\n var optFont = options.font;\n var fonts = isArray(optFont) ? optFont.map(function (f) {\n return toFont(f);\n }) : [toFont(optFont)];\n var strokeWidth = options.textStrokeWidth;\n var lines = isArray(content) ? content : [content];\n var mapKey = lines.join() + fontsKey(fonts) + strokeWidth + (ctx._measureText ? '-spriting' : '');\n\n if (!widthCache.has(mapKey)) {\n widthCache.set(mapKey, calculateLabelSize(ctx, lines, fonts, strokeWidth));\n }\n\n return widthCache.get(mapKey);\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {{x: number, y: number, width: number, height: number}} rect\n * @param {Object} options\n */\n\n\nfunction drawBox(ctx, rect, options) {\n var x = rect.x,\n y = rect.y,\n width = rect.width,\n height = rect.height;\n ctx.save();\n setShadowStyle(ctx, options);\n var stroke = setBorderStyle(ctx, options);\n ctx.fillStyle = options.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: x,\n y: y,\n w: width,\n h: height,\n radius: clampAll(toTRBLCorners(options.borderRadius), 0, Math.min(width, height) / 2)\n });\n ctx.closePath();\n ctx.fill();\n\n if (stroke) {\n ctx.shadowColor = options.borderShadowColor;\n ctx.stroke();\n }\n\n ctx.restore();\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {{x: number, y: number, width: number, height: number}} rect\n * @param {CoreLabelOptions} options\n */\n\n\nfunction drawLabel(ctx, rect, options) {\n var content = options.content;\n\n if (isImageOrCanvas(content)) {\n ctx.save();\n ctx.globalAlpha = getOpacity(options.opacity, content.style.opacity);\n ctx.drawImage(content, rect.x, rect.y, rect.width, rect.height);\n ctx.restore();\n return;\n }\n\n var labels = isArray(content) ? content : [content];\n var optFont = options.font;\n var fonts = isArray(optFont) ? optFont.map(function (f) {\n return toFont(f);\n }) : [toFont(optFont)];\n var optColor = options.color;\n var colors = isArray(optColor) ? optColor : [optColor];\n var x = calculateTextAlignment(rect, options);\n var y = rect.y + options.textStrokeWidth / 2;\n ctx.save();\n ctx.textBaseline = 'middle';\n ctx.textAlign = options.textAlign;\n\n if (setTextStrokeStyle(ctx, options)) {\n applyLabelDecoration(ctx, {\n x: x,\n y: y\n }, labels, fonts);\n }\n\n applyLabelContent(ctx, {\n x: x,\n y: y\n }, labels, {\n fonts: fonts,\n colors: colors\n });\n ctx.restore();\n}\n\nfunction setTextStrokeStyle(ctx, options) {\n if (options.textStrokeWidth > 0) {\n // https://stackoverflow.com/questions/13627111/drawing-text-with-an-outer-stroke-with-html5s-canvas\n ctx.lineJoin = 'round';\n ctx.miterLimit = 2;\n ctx.lineWidth = options.textStrokeWidth;\n ctx.strokeStyle = options.textStrokeColor;\n return true;\n }\n}\n/**\n * @param {CanvasRenderingContext2D} ctx\n * @param {{radius: number, options: PointAnnotationOptions}} element\n * @param {number} x\n * @param {number} y\n */\n\n\nfunction drawPoint(ctx, element, x, y) {\n var radius = element.radius,\n options = element.options;\n var style = options.pointStyle;\n var rotation = options.rotation;\n var rad = (rotation || 0) * RAD_PER_DEG;\n\n if (isImageOrCanvas(style)) {\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 if (notRadius(radius)) {\n return;\n }\n\n drawPointStyle(ctx, {\n x: x,\n y: y,\n radius: radius,\n rotation: rotation,\n style: style,\n rad: rad\n });\n}\n\nfunction drawPointStyle(ctx, _ref3) {\n var x = _ref3.x,\n y = _ref3.y,\n radius = _ref3.radius,\n rotation = _ref3.rotation,\n style = _ref3.style,\n rad = _ref3.rad;\n var xOffset, yOffset, size, cornerRadius;\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, 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 yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, 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 ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n\n rad += QUARTER_PI;\n\n /* falls through */\n\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n\n case 'crossRot':\n rad += QUARTER_PI;\n\n /* falls through */\n\n case 'cross':\n xOffset = 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 ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'star':\n xOffset = 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 ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = 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 ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'line':\n xOffset = 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) * radius, y + Math.sin(rad) * radius);\n break;\n }\n\n ctx.fill();\n}\n\nfunction calculateLabelSize(ctx, lines, fonts, strokeWidth) {\n ctx.save();\n var count = lines.length;\n var width = 0;\n var height = strokeWidth;\n\n for (var i = 0; i < count; i++) {\n var font = fonts[Math.min(i, fonts.length - 1)];\n ctx.font = font.string;\n var text = lines[i];\n width = Math.max(width, ctx.measureText(text).width + strokeWidth);\n height += font.lineHeight;\n }\n\n ctx.restore();\n return {\n width: width,\n height: height\n };\n}\n\nfunction applyLabelDecoration(ctx, _ref4, labels, fonts) {\n var x = _ref4.x,\n y = _ref4.y;\n ctx.beginPath();\n var lhs = 0;\n labels.forEach(function (l, i) {\n var f = fonts[Math.min(i, fonts.length - 1)];\n var lh = f.lineHeight;\n ctx.font = f.string;\n ctx.strokeText(l, x, y + lh / 2 + lhs);\n lhs += lh;\n });\n ctx.stroke();\n}\n\nfunction applyLabelContent(ctx, _ref5, labels, _ref6) {\n var x = _ref5.x,\n y = _ref5.y;\n var fonts = _ref6.fonts,\n colors = _ref6.colors;\n var lhs = 0;\n labels.forEach(function (l, i) {\n var c = colors[Math.min(i, colors.length - 1)];\n var f = fonts[Math.min(i, fonts.length - 1)];\n var lh = f.lineHeight;\n ctx.beginPath();\n ctx.font = f.string;\n ctx.fillStyle = c;\n ctx.fillText(l, x, y + lh / 2 + lhs);\n lhs += lh;\n ctx.fill();\n });\n}\n\nfunction getOpacity(value, elementValue) {\n var opacity = isNumber(value) ? value : elementValue;\n return isNumber(opacity) ? clamp(opacity, 0, 1) : 1;\n}\n\nvar limitedLineScale = {\n xScaleID: {\n min: 'xMin',\n max: 'xMax',\n start: 'left',\n end: 'right',\n startProp: 'x',\n endProp: 'x2'\n },\n yScaleID: {\n min: 'yMin',\n max: 'yMax',\n start: 'bottom',\n end: 'top',\n startProp: 'y',\n endProp: 'y2'\n }\n};\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import(\"chart.js\").Scale } Scale\n * @typedef { import(\"chart.js\").Point } Point\n * @typedef { import('../../types/element').AnnotationBoxModel } AnnotationBoxModel\n * @typedef { import('../../types/options').CoreAnnotationOptions } CoreAnnotationOptions\n * @typedef { import('../../types/options').LineAnnotationOptions } LineAnnotationOptions\n * @typedef { import('../../types/options').PointAnnotationOptions } PointAnnotationOptions\n * @typedef { import('../../types/options').PolygonAnnotationOptions } PolygonAnnotationOptions\n */\n\n/**\n * @param {Scale} scale\n * @param {number|string} value\n * @param {number} fallback\n * @returns {number}\n */\n\nfunction scaleValue(scale, value, fallback) {\n value = typeof value === 'number' ? value : scale.parse(value);\n return isFinite(value) ? scale.getPixelForValue(value) : fallback;\n}\n/**\n * Search the scale defined in chartjs by the axis related to the annotation options key.\n * @param {{ [key: string]: Scale }} scales\n * @param {CoreAnnotationOptions} options\n * @param {string} key\n * @returns {string}\n */\n\n\nfunction retrieveScaleID(scales, options, key) {\n var scaleID = options[key];\n\n if (scaleID || key === 'scaleID') {\n return scaleID;\n }\n\n var axis = key.charAt(0);\n var axes = Object.values(scales).filter(function (scale) {\n return scale.axis && scale.axis === axis;\n });\n\n if (axes.length) {\n return axes[0].id;\n }\n\n return axis;\n}\n/**\n * @param {Scale} scale\n * @param {{min: number, max: number, start: number, end: number}} options\n * @returns {{start: number, end: number}|undefined}\n */\n\n\nfunction getDimensionByScale(scale, options) {\n if (scale) {\n var reverse = scale.options.reverse;\n var start = scaleValue(scale, options.min, reverse ? options.end : options.start);\n var end = scaleValue(scale, options.max, reverse ? options.start : options.end);\n return {\n start: start,\n end: end\n };\n }\n}\n/**\n * @param {Chart} chart\n * @param {CoreAnnotationOptions} options\n * @returns {Point}\n */\n\n\nfunction getChartPoint(chart, options) {\n var chartArea = chart.chartArea,\n scales = chart.scales;\n var xScale = scales[retrieveScaleID(scales, options, 'xScaleID')];\n var yScale = scales[retrieveScaleID(scales, options, 'yScaleID')];\n var x = chartArea.width / 2;\n var y = chartArea.height / 2;\n\n if (xScale) {\n x = scaleValue(xScale, options.xValue, xScale.left + xScale.width / 2);\n }\n\n if (yScale) {\n y = scaleValue(yScale, options.yValue, yScale.top + yScale.height / 2);\n }\n\n return {\n x: x,\n y: y\n };\n}\n/**\n * @param {Chart} chart\n * @param {CoreAnnotationOptions} options\n * @returns {AnnotationBoxModel}\n */\n\n\nfunction resolveBoxProperties(chart, options) {\n var scales = chart.scales;\n var xScale = scales[retrieveScaleID(scales, options, 'xScaleID')];\n var yScale = scales[retrieveScaleID(scales, options, 'yScaleID')];\n\n if (!xScale && !yScale) {\n return {};\n }\n\n var _ref7 = xScale || chart.chartArea,\n x = _ref7.left,\n x2 = _ref7.right;\n\n var _ref8 = yScale || chart.chartArea,\n y = _ref8.top,\n y2 = _ref8.bottom;\n\n var xDim = getChartDimensionByScale(xScale, {\n min: options.xMin,\n max: options.xMax,\n start: x,\n end: x2\n });\n x = xDim.start;\n x2 = xDim.end;\n var yDim = getChartDimensionByScale(yScale, {\n min: options.yMin,\n max: options.yMax,\n start: y2,\n end: y\n });\n y = yDim.start;\n y2 = yDim.end;\n return {\n x: x,\n y: y,\n x2: x2,\n y2: y2,\n width: x2 - x,\n height: y2 - y,\n centerX: x + (x2 - x) / 2,\n centerY: y + (y2 - y) / 2\n };\n}\n/**\n * @param {Chart} chart\n * @param {PointAnnotationOptions|PolygonAnnotationOptions} options\n * @returns {AnnotationBoxModel}\n */\n\n\nfunction resolvePointProperties(chart, options) {\n if (!isBoundToPoint(options)) {\n var box = resolveBoxProperties(chart, options);\n var radius = options.radius;\n\n if (!radius || isNaN(radius)) {\n radius = Math.min(box.width, box.height) / 2;\n options.radius = radius;\n }\n\n var size = radius * 2;\n var adjustCenterX = box.centerX + options.xAdjust;\n var adjustCenterY = box.centerY + options.yAdjust;\n return {\n x: adjustCenterX - radius,\n y: adjustCenterY - radius,\n x2: adjustCenterX + radius,\n y2: adjustCenterY + radius,\n centerX: adjustCenterX,\n centerY: adjustCenterY,\n width: size,\n height: size,\n radius: radius\n };\n }\n\n return getChartCircle(chart, options);\n}\n/**\n * @param {Chart} chart\n * @param {LineAnnotationOptions} options\n * @returns {AnnotationBoxModel}\n */\n\n\nfunction resolveLineProperties(chart, options) {\n var scales = chart.scales,\n chartArea = chart.chartArea;\n var scale = scales[options.scaleID];\n var area = {\n x: chartArea.left,\n y: chartArea.top,\n x2: chartArea.right,\n y2: chartArea.bottom\n };\n\n if (scale) {\n resolveFullLineProperties(scale, area, options);\n } else {\n resolveLimitedLineProperties(scales, area, options);\n }\n\n return area;\n}\n/**\n * @param {Chart} chart\n * @param {CoreAnnotationOptions} options\n * @param {boolean} [centerBased=false]\n * @returns {AnnotationBoxModel}\n */\n\n\nfunction resolveBoxAndLabelProperties(chart, options) {\n var properties = resolveBoxProperties(chart, options);\n properties.initProperties = initAnimationProperties(chart, properties, options);\n properties.elements = [{\n type: 'label',\n optionScope: 'label',\n properties: resolveLabelElementProperties$1(chart, properties, options),\n initProperties: properties.initProperties\n }];\n return properties;\n}\n\nfunction getChartCircle(chart, options) {\n var point = getChartPoint(chart, options);\n var size = options.radius * 2;\n return {\n x: point.x - options.radius + options.xAdjust,\n y: point.y - options.radius + options.yAdjust,\n x2: point.x + options.radius + options.xAdjust,\n y2: point.y + options.radius + options.yAdjust,\n centerX: point.x + options.xAdjust,\n centerY: point.y + options.yAdjust,\n radius: options.radius,\n width: size,\n height: size\n };\n}\n\nfunction getChartDimensionByScale(scale, options) {\n var result = getDimensionByScale(scale, options) || options;\n return {\n start: Math.min(result.start, result.end),\n end: Math.max(result.start, result.end)\n };\n}\n\nfunction resolveFullLineProperties(scale, area, options) {\n var min = scaleValue(scale, options.value, NaN);\n var max = scaleValue(scale, options.endValue, min);\n\n if (scale.isHorizontal()) {\n area.x = min;\n area.x2 = max;\n } else {\n area.y = min;\n area.y2 = max;\n }\n}\n\nfunction resolveLimitedLineProperties(scales, area, options) {\n for (var _i2 = 0, _Object$keys2 = Object.keys(limitedLineScale); _i2 < _Object$keys2.length; _i2++) {\n var scaleId = _Object$keys2[_i2];\n var scale = scales[retrieveScaleID(scales, options, scaleId)];\n\n if (scale) {\n var _limitedLineScale$sca = limitedLineScale[scaleId],\n min = _limitedLineScale$sca.min,\n max = _limitedLineScale$sca.max,\n start = _limitedLineScale$sca.start,\n end = _limitedLineScale$sca.end,\n startProp = _limitedLineScale$sca.startProp,\n endProp = _limitedLineScale$sca.endProp;\n var dim = getDimensionByScale(scale, {\n min: options[min],\n max: options[max],\n start: scale[start],\n end: scale[end]\n });\n area[startProp] = dim.start;\n area[endProp] = dim.end;\n }\n }\n}\n\nfunction calculateX(_ref9, labelSize, position, padding) {\n var properties = _ref9.properties,\n options = _ref9.options;\n var start = properties.x,\n end = properties.x2,\n size = properties.width;\n return calculatePosition$1({\n start: start,\n end: end,\n size: size,\n borderWidth: options.borderWidth\n }, {\n position: position.x,\n padding: {\n start: padding.left,\n end: padding.right\n },\n adjust: options.label.xAdjust,\n size: labelSize.width\n });\n}\n\nfunction calculateY(_ref10, labelSize, position, padding) {\n var properties = _ref10.properties,\n options = _ref10.options;\n var start = properties.y,\n end = properties.y2,\n size = properties.height;\n return calculatePosition$1({\n start: start,\n end: end,\n size: size,\n borderWidth: options.borderWidth\n }, {\n position: position.y,\n padding: {\n start: padding.top,\n end: padding.bottom\n },\n adjust: options.label.yAdjust,\n size: labelSize.height\n });\n}\n\nfunction calculatePosition$1(boxOpts, labelOpts) {\n var start = boxOpts.start,\n end = boxOpts.end,\n borderWidth = boxOpts.borderWidth;\n var position = labelOpts.position,\n _labelOpts$padding = labelOpts.padding,\n padStart = _labelOpts$padding.start,\n padEnd = _labelOpts$padding.end,\n adjust = labelOpts.adjust;\n var availableSize = end - borderWidth - start - padStart - padEnd - labelOpts.size;\n return start + borderWidth / 2 + adjust + getRelativePosition(availableSize, position);\n}\n\nfunction resolveLabelElementProperties$1(chart, properties, options) {\n var label = options.label;\n label.backgroundColor = 'transparent';\n label.callout.display = false;\n var position = toPosition(label.position);\n var padding = toPadding(label.padding);\n var labelSize = measureLabelSize(chart.ctx, label);\n var x = calculateX({\n properties: properties,\n options: options\n }, labelSize, position, padding);\n var y = calculateY({\n properties: properties,\n options: options\n }, labelSize, position, padding);\n var width = labelSize.width + padding.width;\n var height = labelSize.height + padding.height;\n return {\n x: x,\n y: y,\n x2: x + width,\n y2: y + height,\n width: width,\n height: height,\n centerX: x + width / 2,\n centerY: y + height / 2,\n rotation: label.rotation\n };\n}\n/**\n * @typedef {import('chart.js').Point} Point\n */\n\n/**\n * Rotate a `point` relative to `center` point by `angle`\n * @param {Point} point - the point to rotate\n * @param {Point} center - center point for rotation\n * @param {number} angle - angle for rotation, in radians\n * @returns {Point} rotated point\n */\n\n\nfunction rotated(point, center, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var cx = center.x;\n var cy = center.y;\n return {\n x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n };\n}\n\nvar moveHooks = ['enter', 'leave'];\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import('../../types/options').AnnotationPluginOptions } AnnotationPluginOptions\n */\n\nvar eventHooks = moveHooks.concat('click');\n/**\n * @param {Chart} chart\n * @param {Object} state\n * @param {AnnotationPluginOptions} options\n */\n\nfunction updateListeners(chart, state, options) {\n state.listened = loadHooks(options, eventHooks, state.listeners);\n state.moveListened = false;\n state._getElements = getElements; // for testing\n\n moveHooks.forEach(function (hook) {\n if (isFunction(options[hook])) {\n state.moveListened = true;\n }\n });\n\n if (!state.listened || !state.moveListened) {\n state.annotations.forEach(function (scope) {\n if (!state.listened && isFunction(scope.click)) {\n state.listened = true;\n }\n\n if (!state.moveListened) {\n moveHooks.forEach(function (hook) {\n if (isFunction(scope[hook])) {\n state.listened = true;\n state.moveListened = true;\n }\n });\n }\n });\n }\n}\n/**\n * @param {Object} state\n * @param {ChartEvent} event\n * @param {AnnotationPluginOptions} options\n * @return {boolean|undefined}\n */\n\n\nfunction handleEvent(state, event, options) {\n if (state.listened) {\n switch (event.type) {\n case 'mousemove':\n case 'mouseout':\n return handleMoveEvents(state, event, options);\n\n case 'click':\n return handleClickEvents(state, event, options);\n }\n }\n}\n\nfunction handleMoveEvents(state, event, options) {\n if (!state.moveListened) {\n return;\n }\n\n var elements;\n\n if (event.type === 'mousemove') {\n elements = getElements(state, event, options.interaction);\n } else {\n elements = [];\n }\n\n var previous = state.hovered;\n state.hovered = elements;\n var context = {\n state: state,\n event: event\n };\n var changed = dispatchMoveEvents(context, 'leave', previous, elements);\n return dispatchMoveEvents(context, 'enter', elements, previous) || changed;\n}\n\nfunction dispatchMoveEvents(_ref11, hook, elements, checkElements) {\n var state = _ref11.state,\n event = _ref11.event;\n var changed;\n\n var _iterator2 = _createForOfIteratorHelper(elements),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var element = _step2.value;\n\n if (checkElements.indexOf(element) < 0) {\n changed = dispatchEvent(element.options[hook] || state.listeners[hook], element, event) || changed;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return changed;\n}\n\nfunction handleClickEvents(state, event, options) {\n var listeners = state.listeners;\n var elements = getElements(state, event, options.interaction);\n var changed;\n\n var _iterator3 = _createForOfIteratorHelper(elements),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var element = _step3.value;\n changed = dispatchEvent(element.options.click || listeners.click, element, event) || changed;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return changed;\n}\n\nfunction dispatchEvent(handler, element, event) {\n return callback(handler, [element.$context, event]) === true;\n}\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import('../../types/options').AnnotationPluginOptions } AnnotationPluginOptions\n * @typedef { import('../../types/element').AnnotationElement } AnnotationElement\n */\n\n\nvar elementHooks = ['afterDraw', 'beforeDraw'];\n/**\n * @param {Chart} chart\n * @param {Object} state\n * @param {AnnotationPluginOptions} options\n */\n\nfunction updateHooks(chart, state, options) {\n var visibleElements = state.visibleElements;\n state.hooked = loadHooks(options, elementHooks, state.hooks);\n\n if (!state.hooked) {\n visibleElements.forEach(function (scope) {\n if (!state.hooked) {\n elementHooks.forEach(function (hook) {\n if (isFunction(scope.options[hook])) {\n state.hooked = true;\n }\n });\n }\n });\n }\n}\n/**\n * @param {Object} state\n * @param {AnnotationElement} element\n * @param {string} hook\n */\n\n\nfunction invokeHook(state, element, hook) {\n if (state.hooked) {\n var callbackHook = element.options[hook] || state.hooks[hook];\n return callback(callbackHook, [element.$context]);\n }\n}\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import(\"chart.js\").Scale } Scale\n * @typedef { import('../../types/options').CoreAnnotationOptions } CoreAnnotationOptions\n */\n\n/**\n * @param {Chart} chart\n * @param {Scale} scale\n * @param {CoreAnnotationOptions[]} annotations\n */\n\n\nfunction adjustScaleRange(chart, scale, annotations) {\n var range = getScaleLimits(chart.scales, scale, annotations);\n var changed = changeScaleLimit(scale, range, 'min', 'suggestedMin');\n changed = changeScaleLimit(scale, range, 'max', 'suggestedMax') || changed;\n\n if (changed && isFunction(scale.handleTickRangeOptions)) {\n scale.handleTickRangeOptions();\n }\n}\n/**\n * @param {CoreAnnotationOptions[]} annotations\n * @param {{ [key: string]: Scale }} scales\n */\n\n\nfunction verifyScaleOptions(annotations, scales) {\n var _iterator4 = _createForOfIteratorHelper(annotations),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _annotation = _step4.value;\n verifyScaleIDs(_annotation, scales);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n}\n\nfunction changeScaleLimit(scale, range, limit, suggestedLimit) {\n if (isFinite(range[limit]) && !scaleLimitDefined(scale.options, limit, suggestedLimit)) {\n var changed = scale[limit] !== range[limit];\n scale[limit] = range[limit];\n return changed;\n }\n}\n\nfunction scaleLimitDefined(scaleOptions, limit, suggestedLimit) {\n return defined(scaleOptions[limit]) || defined(scaleOptions[suggestedLimit]);\n}\n\nfunction verifyScaleIDs(annotation, scales) {\n for (var _i3 = 0, _arr = ['scaleID', 'xScaleID', 'yScaleID']; _i3 < _arr.length; _i3++) {\n var key = _arr[_i3];\n var scaleID = retrieveScaleID(scales, annotation, key);\n\n if (scaleID && !scales[scaleID] && verifyProperties(annotation, key)) {\n console.warn(\"No scale found with id '\".concat(scaleID, \"' for annotation '\").concat(annotation.id, \"'\"));\n }\n }\n}\n\nfunction verifyProperties(annotation, key) {\n if (key === 'scaleID') {\n return true;\n }\n\n var axis = key.charAt(0);\n\n for (var _i4 = 0, _arr2 = ['Min', 'Max', 'Value']; _i4 < _arr2.length; _i4++) {\n var prop = _arr2[_i4];\n\n if (defined(annotation[axis + prop])) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getScaleLimits(scales, scale, annotations) {\n var axis = scale.axis;\n var scaleID = scale.id;\n var scaleIDOption = axis + 'ScaleID';\n var limits = {\n min: valueOrDefault(scale.min, Number.NEGATIVE_INFINITY),\n max: valueOrDefault(scale.max, Number.POSITIVE_INFINITY)\n };\n\n var _iterator5 = _createForOfIteratorHelper(annotations),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var _annotation2 = _step5.value;\n\n if (_annotation2.scaleID === scaleID) {\n updateLimits(_annotation2, scale, ['value', 'endValue'], limits);\n } else if (retrieveScaleID(scales, _annotation2, scaleIDOption) === scaleID) {\n updateLimits(_annotation2, scale, [axis + 'Min', axis + 'Max', axis + 'Value'], limits);\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return limits;\n}\n\nfunction updateLimits(annotation, scale, props, limits) {\n var _iterator6 = _createForOfIteratorHelper(props),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var prop = _step6.value;\n var raw = annotation[prop];\n\n if (defined(raw)) {\n var value = scale.parse(raw);\n limits.min = Math.min(limits.min, value);\n limits.max = Math.max(limits.max, value);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n}\n\nvar BoxAnnotation = /*#__PURE__*/function (_Element) {\n _inherits(BoxAnnotation, _Element);\n\n var _super = _createSuper(BoxAnnotation);\n\n function BoxAnnotation() {\n _classCallCheck(this, BoxAnnotation);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(BoxAnnotation, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, axis, useFinalPosition) {\n var _rotated = rotated({\n x: mouseX,\n y: mouseY\n }, this.getCenterPoint(useFinalPosition), toRadians(-this.options.rotation)),\n x = _rotated.x,\n y = _rotated.y;\n\n return inBoxRange({\n x: x,\n y: y\n }, this.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis, this.options.borderWidth);\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n return getElementCenterPoint(this, useFinalPosition);\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n ctx.save();\n translate(ctx, this.getCenterPoint(), this.options.rotation);\n drawBox(ctx, this, this.options);\n ctx.restore();\n }\n }, {\n key: \"label\",\n get: function get() {\n return this.elements && this.elements[0];\n }\n }, {\n key: \"resolveElementProperties\",\n value: function resolveElementProperties(chart, options) {\n return resolveBoxAndLabelProperties(chart, options);\n }\n }]);\n\n return BoxAnnotation;\n}(Element);\n\nBoxAnnotation.id = 'boxAnnotation';\nBoxAnnotation.defaults = {\n adjustScaleRange: true,\n backgroundShadowColor: 'transparent',\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderRadius: 0,\n borderShadowColor: 'transparent',\n borderWidth: 1,\n display: true,\n init: undefined,\n label: {\n backgroundColor: 'transparent',\n borderWidth: 0,\n callout: {\n display: false\n },\n color: 'black',\n content: null,\n display: false,\n drawTime: undefined,\n font: {\n family: undefined,\n lineHeight: undefined,\n size: undefined,\n style: undefined,\n weight: 'bold'\n },\n height: undefined,\n opacity: undefined,\n padding: 6,\n position: 'center',\n rotation: undefined,\n textAlign: 'start',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n width: undefined,\n xAdjust: 0,\n yAdjust: 0,\n z: undefined\n },\n rotation: 0,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n xMax: undefined,\n xMin: undefined,\n xScaleID: undefined,\n yMax: undefined,\n yMin: undefined,\n yScaleID: undefined,\n z: 0\n};\nBoxAnnotation.defaultRoutes = {\n borderColor: 'color',\n backgroundColor: 'color'\n};\nBoxAnnotation.descriptors = {\n label: {\n _fallback: true\n }\n};\nvar positions = ['left', 'bottom', 'top', 'right'];\n\nvar LabelAnnotation = /*#__PURE__*/function (_Element2) {\n _inherits(LabelAnnotation, _Element2);\n\n var _super2 = _createSuper(LabelAnnotation);\n\n function LabelAnnotation() {\n _classCallCheck(this, LabelAnnotation);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(LabelAnnotation, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, axis, useFinalPosition) {\n var _rotated2 = rotated({\n x: mouseX,\n y: mouseY\n }, this.getCenterPoint(useFinalPosition), toRadians(-this.rotation)),\n x = _rotated2.x,\n y = _rotated2.y;\n\n return inBoxRange({\n x: x,\n y: y\n }, this.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis, this.options.borderWidth);\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n return getElementCenterPoint(this, useFinalPosition);\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var options = this.options;\n var visible = !defined(this._visible) || this._visible;\n\n if (!options.display || !options.content || !visible) {\n return;\n }\n\n ctx.save();\n translate(ctx, this.getCenterPoint(), this.rotation);\n drawCallout(ctx, this);\n drawBox(ctx, this, options);\n drawLabel(ctx, getLabelSize(this), options);\n ctx.restore();\n }\n }, {\n key: \"resolveElementProperties\",\n value: function resolveElementProperties(chart, options) {\n var point;\n\n if (!isBoundToPoint(options)) {\n var _resolveBoxProperties = resolveBoxProperties(chart, options),\n centerX = _resolveBoxProperties.centerX,\n centerY = _resolveBoxProperties.centerY;\n\n point = {\n x: centerX,\n y: centerY\n };\n } else {\n point = getChartPoint(chart, options);\n }\n\n var padding = toPadding(options.padding);\n var labelSize = measureLabelSize(chart.ctx, options);\n var boxSize = measureRect(point, labelSize, options, padding);\n return _objectSpread(_objectSpread({\n initProperties: initAnimationProperties(chart, boxSize, options),\n pointX: point.x,\n pointY: point.y\n }, boxSize), {}, {\n rotation: options.rotation\n });\n }\n }]);\n\n return LabelAnnotation;\n}(Element);\n\nLabelAnnotation.id = 'labelAnnotation';\nLabelAnnotation.defaults = {\n adjustScaleRange: true,\n backgroundColor: 'transparent',\n backgroundShadowColor: 'transparent',\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderRadius: 0,\n borderShadowColor: 'transparent',\n borderWidth: 0,\n callout: {\n borderCapStyle: 'butt',\n borderColor: undefined,\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 1,\n display: false,\n margin: 5,\n position: 'auto',\n side: 5,\n start: '50%'\n },\n color: 'black',\n content: null,\n display: true,\n font: {\n family: undefined,\n lineHeight: undefined,\n size: undefined,\n style: undefined,\n weight: undefined\n },\n height: undefined,\n init: undefined,\n opacity: undefined,\n padding: 6,\n position: 'center',\n rotation: 0,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n textAlign: 'center',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n width: undefined,\n xAdjust: 0,\n xMax: undefined,\n xMin: undefined,\n xScaleID: undefined,\n xValue: undefined,\n yAdjust: 0,\n yMax: undefined,\n yMin: undefined,\n yScaleID: undefined,\n yValue: undefined,\n z: 0\n};\nLabelAnnotation.defaultRoutes = {\n borderColor: 'color'\n};\n\nfunction measureRect(point, size, options, padding) {\n var width = size.width + padding.width + options.borderWidth;\n var height = size.height + padding.height + options.borderWidth;\n var position = toPosition(options.position, 'center');\n var x = calculatePosition(point.x, width, options.xAdjust, position.x);\n var y = calculatePosition(point.y, height, options.yAdjust, position.y);\n return {\n x: x,\n y: y,\n x2: x + width,\n y2: y + height,\n width: width,\n height: height,\n centerX: x + width / 2,\n centerY: y + height / 2\n };\n}\n\nfunction calculatePosition(start, size) {\n var adjust = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var position = arguments.length > 3 ? arguments[3] : undefined;\n return start - getRelativePosition(size, position) + adjust;\n}\n\nfunction drawCallout(ctx, element) {\n var pointX = element.pointX,\n pointY = element.pointY,\n options = element.options;\n var callout = options.callout;\n var calloutPosition = callout && callout.display && resolveCalloutPosition(element, callout);\n\n if (!calloutPosition || isPointInRange(element, callout, calloutPosition)) {\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n var stroke = setBorderStyle(ctx, callout);\n\n if (!stroke) {\n return ctx.restore();\n }\n\n var _getCalloutSeparatorC = getCalloutSeparatorCoord(element, calloutPosition),\n separatorStart = _getCalloutSeparatorC.separatorStart,\n separatorEnd = _getCalloutSeparatorC.separatorEnd;\n\n var _getCalloutSideCoord = getCalloutSideCoord(element, calloutPosition, separatorStart),\n sideStart = _getCalloutSideCoord.sideStart,\n sideEnd = _getCalloutSideCoord.sideEnd;\n\n if (callout.margin > 0 || options.borderWidth === 0) {\n ctx.moveTo(separatorStart.x, separatorStart.y);\n ctx.lineTo(separatorEnd.x, separatorEnd.y);\n }\n\n ctx.moveTo(sideStart.x, sideStart.y);\n ctx.lineTo(sideEnd.x, sideEnd.y);\n var rotatedPoint = rotated({\n x: pointX,\n y: pointY\n }, element.getCenterPoint(), toRadians(-element.rotation));\n ctx.lineTo(rotatedPoint.x, rotatedPoint.y);\n ctx.stroke();\n ctx.restore();\n}\n\nfunction getCalloutSeparatorCoord(element, position) {\n var x = element.x,\n y = element.y,\n x2 = element.x2,\n y2 = element.y2;\n var adjust = getCalloutSeparatorAdjust(element, position);\n var separatorStart, separatorEnd;\n\n if (position === 'left' || position === 'right') {\n separatorStart = {\n x: x + adjust,\n y: y\n };\n separatorEnd = {\n x: separatorStart.x,\n y: y2\n };\n } else {\n // position 'top' or 'bottom'\n separatorStart = {\n x: x,\n y: y + adjust\n };\n separatorEnd = {\n x: x2,\n y: separatorStart.y\n };\n }\n\n return {\n separatorStart: separatorStart,\n separatorEnd: separatorEnd\n };\n}\n\nfunction getCalloutSeparatorAdjust(element, position) {\n var width = element.width,\n height = element.height,\n options = element.options;\n var adjust = options.callout.margin + options.borderWidth / 2;\n\n if (position === 'right') {\n return width + adjust;\n } else if (position === 'bottom') {\n return height + adjust;\n }\n\n return -adjust;\n}\n\nfunction getCalloutSideCoord(element, position, separatorStart) {\n var y = element.y,\n width = element.width,\n height = element.height,\n options = element.options;\n var start = options.callout.start;\n var side = getCalloutSideAdjust(position, options.callout);\n var sideStart, sideEnd;\n\n if (position === 'left' || position === 'right') {\n sideStart = {\n x: separatorStart.x,\n y: y + getSize(height, start)\n };\n sideEnd = {\n x: sideStart.x + side,\n y: sideStart.y\n };\n } else {\n // position 'top' or 'bottom'\n sideStart = {\n x: separatorStart.x + getSize(width, start),\n y: separatorStart.y\n };\n sideEnd = {\n x: sideStart.x,\n y: sideStart.y + side\n };\n }\n\n return {\n sideStart: sideStart,\n sideEnd: sideEnd\n };\n}\n\nfunction getCalloutSideAdjust(position, options) {\n var side = options.side;\n\n if (position === 'left' || position === 'top') {\n return -side;\n }\n\n return side;\n}\n\nfunction resolveCalloutPosition(element, options) {\n var position = options.position;\n\n if (positions.includes(position)) {\n return position;\n }\n\n return resolveCalloutAutoPosition(element, options);\n}\n\nfunction resolveCalloutAutoPosition(element, options) {\n var x = element.x,\n y = element.y,\n x2 = element.x2,\n y2 = element.y2,\n width = element.width,\n height = element.height,\n pointX = element.pointX,\n pointY = element.pointY,\n centerX = element.centerX,\n centerY = element.centerY,\n rotation = element.rotation;\n var center = {\n x: centerX,\n y: centerY\n };\n var start = options.start;\n var xAdjust = getSize(width, start);\n var yAdjust = getSize(height, start);\n var xPoints = [x, x + xAdjust, x + xAdjust, x2];\n var yPoints = [y + yAdjust, y2, y, y2];\n var result = [];\n\n for (var index = 0; index < 4; index++) {\n var rotatedPoint = rotated({\n x: xPoints[index],\n y: yPoints[index]\n }, center, toRadians(rotation));\n result.push({\n position: positions[index],\n distance: distanceBetweenPoints(rotatedPoint, {\n x: pointX,\n y: pointY\n })\n });\n }\n\n return result.sort(function (a, b) {\n return a.distance - b.distance;\n })[0].position;\n}\n\nfunction getLabelSize(_ref12) {\n var x = _ref12.x,\n y = _ref12.y,\n width = _ref12.width,\n height = _ref12.height,\n options = _ref12.options;\n var hBorderWidth = options.borderWidth / 2;\n var padding = toPadding(options.padding);\n return {\n x: x + padding.left + hBorderWidth,\n y: y + padding.top + hBorderWidth,\n width: width - padding.left - padding.right - options.borderWidth,\n height: height - padding.top - padding.bottom - options.borderWidth\n };\n}\n\nfunction isPointInRange(element, callout, position) {\n var pointX = element.pointX,\n pointY = element.pointY;\n var margin = callout.margin;\n var x = pointX;\n var y = pointY;\n\n if (position === 'left') {\n x += margin;\n } else if (position === 'right') {\n x -= margin;\n } else if (position === 'top') {\n y += margin;\n } else if (position === 'bottom') {\n y -= margin;\n }\n\n return element.inRange(x, y);\n}\n\nvar pointInLine = function pointInLine(p1, p2, t) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n};\n\nvar interpolateX = function interpolateX(y, p1, p2) {\n return pointInLine(p1, p2, Math.abs((y - p1.y) / (p2.y - p1.y))).x;\n};\n\nvar interpolateY = function interpolateY(x, p1, p2) {\n return pointInLine(p1, p2, Math.abs((x - p1.x) / (p2.x - p1.x))).y;\n};\n\nvar sqr = function sqr(v) {\n return v * v;\n};\n\nvar rangeLimit = function rangeLimit(mouseX, mouseY, _ref13, axis) {\n var x = _ref13.x,\n y = _ref13.y,\n x2 = _ref13.x2,\n y2 = _ref13.y2;\n return axis === 'y' ? {\n start: Math.min(y, y2),\n end: Math.max(y, y2),\n value: mouseY\n } : {\n start: Math.min(x, x2),\n end: Math.max(x, x2),\n value: mouseX\n };\n}; // http://www.independent-software.com/determining-coordinates-on-a-html-canvas-bezier-curve.html\n\n\nvar coordInCurve = function coordInCurve(start, cp, end, t) {\n return (1 - t) * (1 - t) * start + 2 * (1 - t) * t * cp + t * t * end;\n};\n\nvar pointInCurve = function pointInCurve(start, cp, end, t) {\n return {\n x: coordInCurve(start.x, cp.x, end.x, t),\n y: coordInCurve(start.y, cp.y, end.y, t)\n };\n};\n\nvar coordAngleInCurve = function coordAngleInCurve(start, cp, end, t) {\n return 2 * (1 - t) * (cp - start) + 2 * t * (end - cp);\n};\n\nvar angleInCurve = function angleInCurve(start, cp, end, t) {\n return -Math.atan2(coordAngleInCurve(start.x, cp.x, end.x, t), coordAngleInCurve(start.y, cp.y, end.y, t)) + 0.5 * PI;\n};\n\nvar LineAnnotation = /*#__PURE__*/function (_Element3) {\n _inherits(LineAnnotation, _Element3);\n\n var _super3 = _createSuper(LineAnnotation);\n\n function LineAnnotation() {\n _classCallCheck(this, LineAnnotation);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(LineAnnotation, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, axis, useFinalPosition) {\n var hBorderWidth = this.options.borderWidth / 2;\n\n if (axis !== 'x' && axis !== 'y') {\n var point = {\n mouseX: mouseX,\n mouseY: mouseY\n };\n var path = this.path,\n ctx = this.ctx;\n\n if (path) {\n setBorderStyle(ctx, this.options);\n var chart = this.$context.chart;\n var mx = mouseX * chart.currentDevicePixelRatio;\n var my = mouseY * chart.currentDevicePixelRatio;\n var result = ctx.isPointInStroke(path, mx, my) || isOnLabel(this, point, useFinalPosition);\n ctx.restore();\n return result;\n }\n\n var epsilon = sqr(hBorderWidth);\n return intersects(this, point, epsilon, useFinalPosition) || isOnLabel(this, point, useFinalPosition);\n }\n\n return inAxisRange(this, {\n mouseX: mouseX,\n mouseY: mouseY\n }, axis, {\n hBorderWidth: hBorderWidth,\n useFinalPosition: useFinalPosition\n });\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n return getElementCenterPoint(this, useFinalPosition);\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var x = this.x,\n y = this.y,\n x2 = this.x2,\n y2 = this.y2,\n cp = this.cp,\n options = this.options;\n ctx.save();\n\n if (!setBorderStyle(ctx, options)) {\n // no border width, then line is not drawn\n return ctx.restore();\n }\n\n setShadowStyle(ctx, options);\n var length = Math.sqrt(Math.pow(x2 - x, 2) + Math.pow(y2 - y, 2));\n\n if (options.curve && cp) {\n drawCurve(ctx, this, cp, length);\n return ctx.restore();\n }\n\n var _getArrowHeads = getArrowHeads(this),\n startOpts = _getArrowHeads.startOpts,\n endOpts = _getArrowHeads.endOpts,\n startAdjust = _getArrowHeads.startAdjust,\n endAdjust = _getArrowHeads.endAdjust;\n\n var angle = Math.atan2(y2 - y, x2 - x);\n ctx.translate(x, y);\n ctx.rotate(angle);\n ctx.beginPath();\n ctx.moveTo(0 + startAdjust, 0);\n ctx.lineTo(length - endAdjust, 0);\n ctx.shadowColor = options.borderShadowColor;\n ctx.stroke();\n drawArrowHead(ctx, 0, startAdjust, startOpts);\n drawArrowHead(ctx, length, -endAdjust, endOpts);\n ctx.restore();\n }\n }, {\n key: \"label\",\n get: function get() {\n return this.elements && this.elements[0];\n }\n }, {\n key: \"resolveElementProperties\",\n value: function resolveElementProperties(chart, options) {\n var area = resolveLineProperties(chart, options);\n var x = area.x,\n y = area.y,\n x2 = area.x2,\n y2 = area.y2;\n var inside = isLineInArea(area, chart.chartArea);\n var properties = inside ? limitLineToArea({\n x: x,\n y: y\n }, {\n x: x2,\n y: y2\n }, chart.chartArea) : {\n x: x,\n y: y,\n x2: x2,\n y2: y2,\n width: Math.abs(x2 - x),\n height: Math.abs(y2 - y)\n };\n properties.centerX = (x2 + x) / 2;\n properties.centerY = (y2 + y) / 2;\n properties.initProperties = initAnimationProperties(chart, properties, options);\n\n if (options.curve) {\n var p1 = {\n x: properties.x,\n y: properties.y\n };\n var p2 = {\n x: properties.x2,\n y: properties.y2\n };\n properties.cp = getControlPoint(properties, options, distanceBetweenPoints(p1, p2));\n }\n\n var labelProperties = resolveLabelElementProperties(chart, properties, options.label); // additonal prop to manage zoom/pan\n\n labelProperties._visible = inside;\n properties.elements = [{\n type: 'label',\n optionScope: 'label',\n properties: labelProperties,\n initProperties: properties.initProperties\n }];\n return properties;\n }\n }]);\n\n return LineAnnotation;\n}(Element);\n\nLineAnnotation.id = 'lineAnnotation';\nvar arrowHeadsDefaults = {\n backgroundColor: undefined,\n backgroundShadowColor: undefined,\n borderColor: undefined,\n borderDash: undefined,\n borderDashOffset: undefined,\n borderShadowColor: undefined,\n borderWidth: undefined,\n display: undefined,\n fill: undefined,\n length: undefined,\n shadowBlur: undefined,\n shadowOffsetX: undefined,\n shadowOffsetY: undefined,\n width: undefined\n};\nLineAnnotation.defaults = {\n adjustScaleRange: true,\n arrowHeads: {\n display: false,\n end: Object.assign({}, arrowHeadsDefaults),\n fill: false,\n length: 12,\n start: Object.assign({}, arrowHeadsDefaults),\n width: 6\n },\n borderDash: [],\n borderDashOffset: 0,\n borderShadowColor: 'transparent',\n borderWidth: 2,\n curve: false,\n controlPoint: {\n y: '-50%'\n },\n display: true,\n endValue: undefined,\n init: undefined,\n label: {\n backgroundColor: 'rgba(0,0,0,0.8)',\n backgroundShadowColor: 'transparent',\n borderCapStyle: 'butt',\n borderColor: 'black',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderRadius: 6,\n borderShadowColor: 'transparent',\n borderWidth: 0,\n callout: Object.assign({}, LabelAnnotation.defaults.callout),\n color: '#fff',\n content: null,\n display: false,\n drawTime: undefined,\n font: {\n family: undefined,\n lineHeight: undefined,\n size: undefined,\n style: undefined,\n weight: 'bold'\n },\n height: undefined,\n opacity: undefined,\n padding: 6,\n position: 'center',\n rotation: 0,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n textAlign: 'center',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n width: undefined,\n xAdjust: 0,\n yAdjust: 0,\n z: undefined\n },\n scaleID: undefined,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n value: undefined,\n xMax: undefined,\n xMin: undefined,\n xScaleID: undefined,\n yMax: undefined,\n yMin: undefined,\n yScaleID: undefined,\n z: 0\n};\nLineAnnotation.descriptors = {\n arrowHeads: {\n start: {\n _fallback: true\n },\n end: {\n _fallback: true\n },\n _fallback: true\n }\n};\nLineAnnotation.defaultRoutes = {\n borderColor: 'color'\n};\n\nfunction inAxisRange(element, _ref14, axis, _ref15) {\n var mouseX = _ref14.mouseX,\n mouseY = _ref14.mouseY;\n var hBorderWidth = _ref15.hBorderWidth,\n useFinalPosition = _ref15.useFinalPosition;\n var limit = rangeLimit(mouseX, mouseY, element.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition), axis);\n return limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth || isOnLabel(element, {\n mouseX: mouseX,\n mouseY: mouseY\n }, useFinalPosition, axis);\n}\n\nfunction isLineInArea(_ref16, _ref17) {\n var x = _ref16.x,\n y = _ref16.y,\n x2 = _ref16.x2,\n y2 = _ref16.y2;\n var top = _ref17.top,\n right = _ref17.right,\n bottom = _ref17.bottom,\n left = _ref17.left;\n return !(x < left && x2 < left || x > right && x2 > right || y < top && y2 < top || y > bottom && y2 > bottom);\n}\n\nfunction limitPointToArea(_ref18, p2, _ref19) {\n var x = _ref18.x,\n y = _ref18.y;\n var top = _ref19.top,\n right = _ref19.right,\n bottom = _ref19.bottom,\n left = _ref19.left;\n\n if (x < left) {\n y = interpolateY(left, {\n x: x,\n y: y\n }, p2);\n x = left;\n }\n\n if (x > right) {\n y = interpolateY(right, {\n x: x,\n y: y\n }, p2);\n x = right;\n }\n\n if (y < top) {\n x = interpolateX(top, {\n x: x,\n y: y\n }, p2);\n y = top;\n }\n\n if (y > bottom) {\n x = interpolateX(bottom, {\n x: x,\n y: y\n }, p2);\n y = bottom;\n }\n\n return {\n x: x,\n y: y\n };\n}\n\nfunction limitLineToArea(p1, p2, area) {\n var _limitPointToArea = limitPointToArea(p1, p2, area),\n x = _limitPointToArea.x,\n y = _limitPointToArea.y;\n\n var _limitPointToArea2 = limitPointToArea(p2, p1, area),\n x2 = _limitPointToArea2.x,\n y2 = _limitPointToArea2.y;\n\n return {\n x: x,\n y: y,\n x2: x2,\n y2: y2,\n width: Math.abs(x2 - x),\n height: Math.abs(y2 - y)\n };\n}\n\nfunction intersects(element, _ref20) {\n var mouseX = _ref20.mouseX,\n mouseY = _ref20.mouseY;\n var epsilon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EPSILON;\n var useFinalPosition = arguments.length > 3 ? arguments[3] : undefined;\n\n // Adapted from https://stackoverflow.com/a/6853926/25507\n var _element$getProps2 = element.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition),\n x1 = _element$getProps2.x,\n y1 = _element$getProps2.y,\n x2 = _element$getProps2.x2,\n y2 = _element$getProps2.y2;\n\n var dx = x2 - x1;\n var dy = y2 - y1;\n var lenSq = sqr(dx) + sqr(dy);\n var t = lenSq === 0 ? -1 : ((mouseX - x1) * dx + (mouseY - y1) * dy) / lenSq;\n var xx, yy;\n\n if (t < 0) {\n xx = x1;\n yy = y1;\n } else if (t > 1) {\n xx = x2;\n yy = y2;\n } else {\n xx = x1 + t * dx;\n yy = y1 + t * dy;\n }\n\n return sqr(mouseX - xx) + sqr(mouseY - yy) <= epsilon;\n}\n\nfunction isOnLabel(element, _ref21, useFinalPosition, axis) {\n var mouseX = _ref21.mouseX,\n mouseY = _ref21.mouseY;\n var label = element.label;\n return label.options.display && label.inRange(mouseX, mouseY, axis, useFinalPosition);\n}\n\nfunction resolveLabelElementProperties(chart, properties, options) {\n var borderWidth = options.borderWidth;\n var padding = toPadding(options.padding);\n var textSize = measureLabelSize(chart.ctx, options);\n var width = textSize.width + padding.width + borderWidth;\n var height = textSize.height + padding.height + borderWidth;\n return calculateLabelPosition(properties, options, {\n width: width,\n height: height,\n padding: padding\n }, chart.chartArea);\n}\n\nfunction calculateAutoRotation(properties) {\n var x = properties.x,\n y = properties.y,\n x2 = properties.x2,\n y2 = properties.y2;\n var rotation = Math.atan2(y2 - y, x2 - x); // Flip the rotation if it goes > PI/2 or < -PI/2, so label stays upright\n\n return rotation > PI / 2 ? rotation - PI : rotation < PI / -2 ? rotation + PI : rotation;\n}\n\nfunction calculateLabelPosition(properties, label, sizes, chartArea) {\n var width = sizes.width,\n height = sizes.height,\n padding = sizes.padding;\n var xAdjust = label.xAdjust,\n yAdjust = label.yAdjust;\n var p1 = {\n x: properties.x,\n y: properties.y\n };\n var p2 = {\n x: properties.x2,\n y: properties.y2\n };\n var rotation = label.rotation === 'auto' ? calculateAutoRotation(properties) : toRadians(label.rotation);\n var size = rotatedSize(width, height, rotation);\n var t = calculateT(properties, label, {\n labelSize: size,\n padding: padding\n }, chartArea);\n var pt = properties.cp ? pointInCurve(p1, properties.cp, p2, t) : pointInLine(p1, p2, t);\n var xCoordinateSizes = {\n size: size.w,\n min: chartArea.left,\n max: chartArea.right,\n padding: padding.left\n };\n var yCoordinateSizes = {\n size: size.h,\n min: chartArea.top,\n max: chartArea.bottom,\n padding: padding.top\n };\n var centerX = adjustLabelCoordinate(pt.x, xCoordinateSizes) + xAdjust;\n var centerY = adjustLabelCoordinate(pt.y, yCoordinateSizes) + yAdjust;\n return {\n x: centerX - width / 2,\n y: centerY - height / 2,\n x2: centerX + width / 2,\n y2: centerY + height / 2,\n centerX: centerX,\n centerY: centerY,\n pointX: pt.x,\n pointY: pt.y,\n width: width,\n height: height,\n rotation: toDegrees(rotation)\n };\n}\n\nfunction rotatedSize(width, height, rotation) {\n var cos = Math.cos(rotation);\n var sin = Math.sin(rotation);\n return {\n w: Math.abs(width * cos) + Math.abs(height * sin),\n h: Math.abs(width * sin) + Math.abs(height * cos)\n };\n}\n\nfunction calculateT(properties, label, sizes, chartArea) {\n var t;\n var space = spaceAround(properties, chartArea);\n\n if (label.position === 'start') {\n t = calculateTAdjust({\n w: properties.x2 - properties.x,\n h: properties.y2 - properties.y\n }, sizes, label, space);\n } else if (label.position === 'end') {\n t = 1 - calculateTAdjust({\n w: properties.x - properties.x2,\n h: properties.y - properties.y2\n }, sizes, label, space);\n } else {\n t = getRelativePosition(1, label.position);\n }\n\n return t;\n}\n\nfunction calculateTAdjust(lineSize, sizes, label, space) {\n var labelSize = sizes.labelSize,\n padding = sizes.padding;\n var lineW = lineSize.w * space.dx;\n var lineH = lineSize.h * space.dy;\n var x = lineW > 0 && (labelSize.w / 2 + padding.left - space.x) / lineW;\n var y = lineH > 0 && (labelSize.h / 2 + padding.top - space.y) / lineH;\n return clamp(Math.max(x, y), 0, 0.25);\n}\n\nfunction spaceAround(properties, chartArea) {\n var x = properties.x,\n x2 = properties.x2,\n y = properties.y,\n y2 = properties.y2;\n var t = Math.min(y, y2) - chartArea.top;\n var l = Math.min(x, x2) - chartArea.left;\n var b = chartArea.bottom - Math.max(y, y2);\n var r = chartArea.right - Math.max(x, x2);\n return {\n x: Math.min(l, r),\n y: Math.min(t, b),\n dx: l <= r ? 1 : -1,\n dy: t <= b ? 1 : -1\n };\n}\n\nfunction adjustLabelCoordinate(coordinate, labelSizes) {\n var size = labelSizes.size,\n min = labelSizes.min,\n max = labelSizes.max,\n padding = labelSizes.padding;\n var halfSize = size / 2;\n\n if (size > max - min) {\n // if it does not fit, display as much as possible\n return (max + min) / 2;\n }\n\n if (min >= coordinate - padding - halfSize) {\n coordinate = min + padding + halfSize;\n }\n\n if (max <= coordinate + padding + halfSize) {\n coordinate = max - padding - halfSize;\n }\n\n return coordinate;\n}\n\nfunction getArrowHeads(line) {\n var options = line.options;\n var arrowStartOpts = options.arrowHeads && options.arrowHeads.start;\n var arrowEndOpts = options.arrowHeads && options.arrowHeads.end;\n return {\n startOpts: arrowStartOpts,\n endOpts: arrowEndOpts,\n startAdjust: getLineAdjust(line, arrowStartOpts),\n endAdjust: getLineAdjust(line, arrowEndOpts)\n };\n}\n\nfunction getLineAdjust(line, arrowOpts) {\n if (!arrowOpts || !arrowOpts.display) {\n return 0;\n }\n\n var length = arrowOpts.length,\n width = arrowOpts.width;\n var adjust = line.options.borderWidth / 2;\n var p1 = {\n x: length,\n y: width + adjust\n };\n var p2 = {\n x: 0,\n y: adjust\n };\n return Math.abs(interpolateX(0, p1, p2));\n}\n\nfunction drawArrowHead(ctx, offset, adjust, arrowOpts) {\n if (!arrowOpts || !arrowOpts.display) {\n return;\n }\n\n var length = arrowOpts.length,\n width = arrowOpts.width,\n fill = arrowOpts.fill,\n backgroundColor = arrowOpts.backgroundColor,\n borderColor = arrowOpts.borderColor;\n var arrowOffsetX = Math.abs(offset - length) + adjust;\n ctx.beginPath();\n setShadowStyle(ctx, arrowOpts);\n setBorderStyle(ctx, arrowOpts);\n ctx.moveTo(arrowOffsetX, -width);\n ctx.lineTo(offset + adjust, 0);\n ctx.lineTo(arrowOffsetX, width);\n\n if (fill === true) {\n ctx.fillStyle = backgroundColor || borderColor;\n ctx.closePath();\n ctx.fill();\n ctx.shadowColor = 'transparent';\n } else {\n ctx.shadowColor = arrowOpts.borderShadowColor;\n }\n\n ctx.stroke();\n}\n\nfunction getControlPoint(properties, options, distance) {\n var x = properties.x,\n y = properties.y,\n x2 = properties.x2,\n y2 = properties.y2,\n centerX = properties.centerX,\n centerY = properties.centerY;\n var angle = Math.atan2(y2 - y, x2 - x);\n var cp = toPosition(options.controlPoint, 0);\n var point = {\n x: centerX + getSize(distance, cp.x, false),\n y: centerY + getSize(distance, cp.y, false)\n };\n return rotated(point, {\n x: centerX,\n y: centerY\n }, angle);\n}\n\nfunction drawArrowHeadOnCurve(ctx, _ref22, _ref23, arrowOpts) {\n var x = _ref22.x,\n y = _ref22.y;\n var angle = _ref23.angle,\n adjust = _ref23.adjust;\n\n if (!arrowOpts || !arrowOpts.display) {\n return;\n }\n\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(angle);\n drawArrowHead(ctx, 0, -adjust, arrowOpts);\n ctx.restore();\n}\n\nfunction drawCurve(ctx, element, cp, length) {\n var x = element.x,\n y = element.y,\n x2 = element.x2,\n y2 = element.y2,\n options = element.options;\n\n var _getArrowHeads2 = getArrowHeads(element),\n startOpts = _getArrowHeads2.startOpts,\n endOpts = _getArrowHeads2.endOpts,\n startAdjust = _getArrowHeads2.startAdjust,\n endAdjust = _getArrowHeads2.endAdjust;\n\n var p1 = {\n x: x,\n y: y\n };\n var p2 = {\n x: x2,\n y: y2\n };\n var startAngle = angleInCurve(p1, cp, p2, 0);\n var endAngle = angleInCurve(p1, cp, p2, 1) - PI;\n var ps = pointInCurve(p1, cp, p2, startAdjust / length);\n var pe = pointInCurve(p1, cp, p2, 1 - endAdjust / length);\n var path = new Path2D();\n ctx.beginPath();\n path.moveTo(ps.x, ps.y);\n path.quadraticCurveTo(cp.x, cp.y, pe.x, pe.y);\n ctx.shadowColor = options.borderShadowColor;\n ctx.stroke(path);\n element.path = path;\n element.ctx = ctx;\n drawArrowHeadOnCurve(ctx, ps, {\n angle: startAngle,\n adjust: startAdjust\n }, startOpts);\n drawArrowHeadOnCurve(ctx, pe, {\n angle: endAngle,\n adjust: endAdjust\n }, endOpts);\n}\n\nvar EllipseAnnotation = /*#__PURE__*/function (_Element4) {\n _inherits(EllipseAnnotation, _Element4);\n\n var _super4 = _createSuper(EllipseAnnotation);\n\n function EllipseAnnotation() {\n _classCallCheck(this, EllipseAnnotation);\n\n return _super4.apply(this, arguments);\n }\n\n _createClass(EllipseAnnotation, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, axis, useFinalPosition) {\n var rotation = this.options.rotation;\n var borderWidth = this.options.borderWidth;\n\n if (axis !== 'x' && axis !== 'y') {\n return pointInEllipse({\n x: mouseX,\n y: mouseY\n }, this.getProps(['width', 'height', 'centerX', 'centerY'], useFinalPosition), rotation, borderWidth);\n }\n\n var _this$getProps = this.getProps(['x', 'y', 'x2', 'y2'], useFinalPosition),\n x = _this$getProps.x,\n y = _this$getProps.y,\n x2 = _this$getProps.x2,\n y2 = _this$getProps.y2;\n\n var hBorderWidth = borderWidth / 2;\n var limit = axis === 'y' ? {\n start: y,\n end: y2\n } : {\n start: x,\n end: x2\n };\n var rotatedPoint = rotated({\n x: mouseX,\n y: mouseY\n }, this.getCenterPoint(useFinalPosition), toRadians(-rotation));\n return rotatedPoint[axis] >= limit.start - hBorderWidth - EPSILON && rotatedPoint[axis] <= limit.end + hBorderWidth + EPSILON;\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n return getElementCenterPoint(this, useFinalPosition);\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var width = this.width,\n height = this.height,\n centerX = this.centerX,\n centerY = this.centerY,\n options = this.options;\n ctx.save();\n translate(ctx, this.getCenterPoint(), options.rotation);\n setShadowStyle(ctx, this.options);\n ctx.beginPath();\n ctx.fillStyle = options.backgroundColor;\n var stroke = setBorderStyle(ctx, options);\n ctx.ellipse(centerX, centerY, height / 2, width / 2, PI / 2, 0, 2 * PI);\n ctx.fill();\n\n if (stroke) {\n ctx.shadowColor = options.borderShadowColor;\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }, {\n key: \"label\",\n get: function get() {\n return this.elements && this.elements[0];\n }\n }, {\n key: \"resolveElementProperties\",\n value: function resolveElementProperties(chart, options) {\n return resolveBoxAndLabelProperties(chart, options);\n }\n }]);\n\n return EllipseAnnotation;\n}(Element);\n\nEllipseAnnotation.id = 'ellipseAnnotation';\nEllipseAnnotation.defaults = {\n adjustScaleRange: true,\n backgroundShadowColor: 'transparent',\n borderDash: [],\n borderDashOffset: 0,\n borderShadowColor: 'transparent',\n borderWidth: 1,\n display: true,\n init: undefined,\n label: Object.assign({}, BoxAnnotation.defaults.label),\n rotation: 0,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n xMax: undefined,\n xMin: undefined,\n xScaleID: undefined,\n yMax: undefined,\n yMin: undefined,\n yScaleID: undefined,\n z: 0\n};\nEllipseAnnotation.defaultRoutes = {\n borderColor: 'color',\n backgroundColor: 'color'\n};\nEllipseAnnotation.descriptors = {\n label: {\n _fallback: true\n }\n};\n\nfunction pointInEllipse(p, ellipse, rotation, borderWidth) {\n var width = ellipse.width,\n height = ellipse.height,\n centerX = ellipse.centerX,\n centerY = ellipse.centerY;\n var xRadius = width / 2;\n var yRadius = height / 2;\n\n if (xRadius <= 0 || yRadius <= 0) {\n return false;\n } // https://stackoverflow.com/questions/7946187/point-and-ellipse-rotated-position-test-algorithm\n\n\n var angle = toRadians(rotation || 0);\n var hBorderWidth = borderWidth / 2 || 0;\n var cosAngle = Math.cos(angle);\n var sinAngle = Math.sin(angle);\n var a = Math.pow(cosAngle * (p.x - centerX) + sinAngle * (p.y - centerY), 2);\n var b = Math.pow(sinAngle * (p.x - centerX) - cosAngle * (p.y - centerY), 2);\n return a / Math.pow(xRadius + hBorderWidth, 2) + b / Math.pow(yRadius + hBorderWidth, 2) <= 1.0001;\n}\n\nvar PointAnnotation = /*#__PURE__*/function (_Element5) {\n _inherits(PointAnnotation, _Element5);\n\n var _super5 = _createSuper(PointAnnotation);\n\n function PointAnnotation() {\n _classCallCheck(this, PointAnnotation);\n\n return _super5.apply(this, arguments);\n }\n\n _createClass(PointAnnotation, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, axis, useFinalPosition) {\n var _this$getProps2 = this.getProps(['x', 'y', 'x2', 'y2', 'width'], useFinalPosition),\n x = _this$getProps2.x,\n y = _this$getProps2.y,\n x2 = _this$getProps2.x2,\n y2 = _this$getProps2.y2,\n width = _this$getProps2.width;\n\n var borderWidth = this.options.borderWidth;\n\n if (axis !== 'x' && axis !== 'y') {\n return inPointRange({\n x: mouseX,\n y: mouseY\n }, this.getCenterPoint(useFinalPosition), width / 2, borderWidth);\n }\n\n var hBorderWidth = borderWidth / 2;\n var limit = axis === 'y' ? {\n start: y,\n end: y2,\n value: mouseY\n } : {\n start: x,\n end: x2,\n value: mouseX\n };\n return limit.value >= limit.start - hBorderWidth && limit.value <= limit.end + hBorderWidth;\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n return getElementCenterPoint(this, useFinalPosition);\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var options = this.options;\n var borderWidth = options.borderWidth;\n\n if (options.radius < 0.1) {\n return;\n }\n\n ctx.save();\n ctx.fillStyle = options.backgroundColor;\n setShadowStyle(ctx, options);\n var stroke = setBorderStyle(ctx, options);\n drawPoint(ctx, this, this.centerX, this.centerY);\n\n if (stroke && !isImageOrCanvas(options.pointStyle)) {\n ctx.shadowColor = options.borderShadowColor;\n ctx.stroke();\n }\n\n ctx.restore();\n options.borderWidth = borderWidth;\n }\n }, {\n key: \"resolveElementProperties\",\n value: function resolveElementProperties(chart, options) {\n var properties = resolvePointProperties(chart, options);\n properties.initProperties = initAnimationProperties(chart, properties, options);\n return properties;\n }\n }]);\n\n return PointAnnotation;\n}(Element);\n\nPointAnnotation.id = 'pointAnnotation';\nPointAnnotation.defaults = {\n adjustScaleRange: true,\n backgroundShadowColor: 'transparent',\n borderDash: [],\n borderDashOffset: 0,\n borderShadowColor: 'transparent',\n borderWidth: 1,\n display: true,\n init: undefined,\n pointStyle: 'circle',\n radius: 10,\n rotation: 0,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n xAdjust: 0,\n xMax: undefined,\n xMin: undefined,\n xScaleID: undefined,\n xValue: undefined,\n yAdjust: 0,\n yMax: undefined,\n yMin: undefined,\n yScaleID: undefined,\n yValue: undefined,\n z: 0\n};\nPointAnnotation.defaultRoutes = {\n borderColor: 'color',\n backgroundColor: 'color'\n};\n\nvar PolygonAnnotation = /*#__PURE__*/function (_Element6) {\n _inherits(PolygonAnnotation, _Element6);\n\n var _super6 = _createSuper(PolygonAnnotation);\n\n function PolygonAnnotation() {\n _classCallCheck(this, PolygonAnnotation);\n\n return _super6.apply(this, arguments);\n }\n\n _createClass(PolygonAnnotation, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, axis, useFinalPosition) {\n if (axis !== 'x' && axis !== 'y') {\n return this.options.radius >= 0.1 && this.elements.length > 1 && pointIsInPolygon(this.elements, mouseX, mouseY, useFinalPosition);\n }\n\n var rotatedPoint = rotated({\n x: mouseX,\n y: mouseY\n }, this.getCenterPoint(useFinalPosition), toRadians(-this.options.rotation));\n var axisPoints = this.elements.map(function (point) {\n return axis === 'y' ? point.bY : point.bX;\n });\n var start = Math.min.apply(Math, _toConsumableArray(axisPoints));\n var end = Math.max.apply(Math, _toConsumableArray(axisPoints));\n return rotatedPoint[axis] >= start && rotatedPoint[axis] <= end;\n }\n }, {\n key: \"getCenterPoint\",\n value: function getCenterPoint(useFinalPosition) {\n return getElementCenterPoint(this, useFinalPosition);\n }\n }, {\n key: \"draw\",\n value: function draw(ctx) {\n var elements = this.elements,\n options = this.options;\n ctx.save();\n ctx.beginPath();\n ctx.fillStyle = options.backgroundColor;\n setShadowStyle(ctx, options);\n var stroke = setBorderStyle(ctx, options);\n var first = true;\n\n var _iterator7 = _createForOfIteratorHelper(elements),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var el = _step7.value;\n\n if (first) {\n ctx.moveTo(el.x, el.y);\n first = false;\n } else {\n ctx.lineTo(el.x, el.y);\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n ctx.closePath();\n ctx.fill(); // If no border, don't draw it\n\n if (stroke) {\n ctx.shadowColor = options.borderShadowColor;\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }, {\n key: \"resolveElementProperties\",\n value: function resolveElementProperties(chart, options) {\n var properties = resolvePointProperties(chart, options);\n var sides = options.sides,\n rotation = options.rotation;\n var elements = [];\n var angle = 2 * PI / sides;\n var rad = rotation * RAD_PER_DEG;\n\n for (var i = 0; i < sides; i++, rad += angle) {\n var elProps = buildPointElement(properties, options, rad);\n elProps.initProperties = initAnimationProperties(chart, properties, options);\n elements.push(elProps);\n }\n\n properties.elements = elements;\n return properties;\n }\n }]);\n\n return PolygonAnnotation;\n}(Element);\n\nPolygonAnnotation.id = 'polygonAnnotation';\nPolygonAnnotation.defaults = {\n adjustScaleRange: true,\n backgroundShadowColor: 'transparent',\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderShadowColor: 'transparent',\n borderWidth: 1,\n display: true,\n init: undefined,\n point: {\n radius: 0\n },\n radius: 10,\n rotation: 0,\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n sides: 3,\n xAdjust: 0,\n xMax: undefined,\n xMin: undefined,\n xScaleID: undefined,\n xValue: undefined,\n yAdjust: 0,\n yMax: undefined,\n yMin: undefined,\n yScaleID: undefined,\n yValue: undefined,\n z: 0\n};\nPolygonAnnotation.defaultRoutes = {\n borderColor: 'color',\n backgroundColor: 'color'\n};\n\nfunction buildPointElement(_ref24, _ref25, rad) {\n var centerX = _ref24.centerX,\n centerY = _ref24.centerY;\n var radius = _ref25.radius,\n borderWidth = _ref25.borderWidth;\n var halfBorder = borderWidth / 2;\n var sin = Math.sin(rad);\n var cos = Math.cos(rad);\n var point = {\n x: centerX + sin * radius,\n y: centerY - cos * radius\n };\n return {\n type: 'point',\n optionScope: 'point',\n properties: {\n x: point.x,\n y: point.y,\n centerX: point.x,\n centerY: point.y,\n bX: centerX + sin * (radius + halfBorder),\n bY: centerY - cos * (radius + halfBorder)\n }\n };\n}\n\nfunction pointIsInPolygon(points, x, y, useFinalPosition) {\n var isInside = false;\n var A = points[points.length - 1].getProps(['bX', 'bY'], useFinalPosition);\n\n var _iterator8 = _createForOfIteratorHelper(points),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var point = _step8.value;\n var B = point.getProps(['bX', 'bY'], useFinalPosition);\n\n if (B.bY > y !== A.bY > y && x < (A.bX - B.bX) * (y - B.bY) / (A.bY - B.bY) + B.bX) {\n isInside = !isInside;\n }\n\n A = B;\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n return isInside;\n}\n\nvar annotationTypes = {\n box: BoxAnnotation,\n ellipse: EllipseAnnotation,\n label: LabelAnnotation,\n line: LineAnnotation,\n point: PointAnnotation,\n polygon: PolygonAnnotation\n};\n/**\n * Register fallback for annotation elements\n * For example lineAnnotation options would be looked through:\n * - the annotation object (options.plugins.annotation.annotations[id])\n * - element options (options.elements.lineAnnotation)\n * - element defaults (defaults.elements.lineAnnotation)\n * - annotation plugin defaults (defaults.plugins.annotation, this is what we are registering here)\n */\n\nObject.keys(annotationTypes).forEach(function (key) {\n defaults.describe(\"elements.\".concat(annotationTypes[key].id), {\n _fallback: 'plugins.annotation.common'\n });\n});\nvar directUpdater = {\n update: Object.assign\n};\nvar hooks$1 = eventHooks.concat(elementHooks);\n\nvar resolve = function resolve(value, optDefs) {\n return isObject(optDefs) ? resolveObj(value, optDefs) : value;\n};\n/**\n * @typedef { import(\"chart.js\").Chart } Chart\n * @typedef { import(\"chart.js\").UpdateMode } UpdateMode\n * @typedef { import('../../types/options').AnnotationPluginOptions } AnnotationPluginOptions\n */\n\n/**\n * @param {string} prop\n * @returns {boolean}\n */\n\n\nvar isIndexable = function isIndexable(prop) {\n return prop === 'color' || prop === 'font';\n};\n/**\n * Resolve the annotation type, checking if is supported.\n * @param {string} [type=line] - annotation type\n * @returns {string} resolved annotation type\n */\n\n\nfunction resolveType() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'line';\n\n if (annotationTypes[type]) {\n return type;\n }\n\n console.warn(\"Unknown annotation type: '\".concat(type, \"', defaulting to 'line'\"));\n return 'line';\n}\n/**\n * @param {Chart} chart\n * @param {Object} state\n * @param {AnnotationPluginOptions} options\n * @param {UpdateMode} mode\n */\n\n\nfunction updateElements(chart, state, options, mode) {\n var animations = resolveAnimations(chart, options.animations, mode);\n var annotations = state.annotations;\n var elements = resyncElements(state.elements, annotations);\n\n for (var i = 0; i < annotations.length; i++) {\n var annotationOptions = annotations[i];\n var element = getOrCreateElement(elements, i, annotationOptions.type);\n var resolver = annotationOptions.setContext(getContext(chart, element, annotationOptions));\n var properties = element.resolveElementProperties(chart, resolver);\n properties.skip = toSkip(properties);\n\n if ('elements' in properties) {\n updateSubElements(element, properties.elements, resolver, animations); // Remove the sub-element definitions from properties, so the actual elements\n // are not overwritten by their definitions\n\n delete properties.elements;\n }\n\n if (!defined(element.x)) {\n // If the element is newly created, assing the properties directly - to\n // make them readily awailable to any scriptable options. If we do not do this,\n // the properties retruned by `resolveElementProperties` are available only\n // after options resolution.\n Object.assign(element, properties);\n }\n\n Object.assign(element, properties.initProperties);\n properties.options = resolveAnnotationOptions(resolver);\n animations.update(element, properties);\n }\n}\n\nfunction toSkip(properties) {\n return isNaN(properties.x) || isNaN(properties.y);\n}\n\nfunction resolveAnimations(chart, animOpts, mode) {\n if (mode === 'reset' || mode === 'none' || mode === 'resize') {\n return directUpdater;\n }\n\n return new Animations(chart, animOpts);\n}\n\nfunction updateSubElements(mainElement, elements, resolver, animations) {\n var subElements = mainElement.elements || (mainElement.elements = []);\n subElements.length = elements.length;\n\n for (var i = 0; i < elements.length; i++) {\n var definition = elements[i];\n var properties = definition.properties;\n var subElement = getOrCreateElement(subElements, i, definition.type, definition.initProperties);\n var subResolver = resolver[definition.optionScope].override(definition);\n properties.options = resolveAnnotationOptions(subResolver);\n animations.update(subElement, properties);\n }\n}\n\nfunction getOrCreateElement(elements, index, type, initProperties) {\n var elementClass = annotationTypes[resolveType(type)];\n var element = elements[index];\n\n if (!element || !(element instanceof elementClass)) {\n element = elements[index] = new elementClass();\n Object.assign(element, initProperties);\n }\n\n return element;\n}\n\nfunction resolveAnnotationOptions(resolver) {\n var elementClass = annotationTypes[resolveType(resolver.type)];\n var result = {};\n result.id = resolver.id;\n result.type = resolver.type;\n result.drawTime = resolver.drawTime;\n Object.assign(result, resolveObj(resolver, elementClass.defaults), resolveObj(resolver, elementClass.defaultRoutes));\n\n var _iterator9 = _createForOfIteratorHelper(hooks$1),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var hook = _step9.value;\n result[hook] = resolver[hook];\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n return result;\n}\n\nfunction resolveObj(resolver, defs) {\n var result = {};\n\n var _loop = function _loop() {\n var prop = _Object$keys3[_i5];\n var optDefs = defs[prop];\n var value = resolver[prop];\n\n if (isIndexable(prop) && isArray(value)) {\n result[prop] = value.map(function (item) {\n return resolve(item, optDefs);\n });\n } else {\n result[prop] = resolve(value, optDefs);\n }\n };\n\n for (var _i5 = 0, _Object$keys3 = Object.keys(defs); _i5 < _Object$keys3.length; _i5++) {\n _loop();\n }\n\n return result;\n}\n\nfunction getContext(chart, element, annotation) {\n return element.$context || (element.$context = Object.assign(Object.create(chart.getContext()), {\n element: element,\n id: annotation.id,\n type: 'annotation'\n }));\n}\n\nfunction resyncElements(elements, annotations) {\n var count = annotations.length;\n var start = elements.length;\n\n if (start < count) {\n var add = count - start;\n elements.splice.apply(elements, [start, 0].concat(_toConsumableArray(new Array(add))));\n } else if (start > count) {\n elements.splice(count, start - count);\n }\n\n return elements;\n}\n\nvar version = \"3.0.1\";\nvar chartStates = new Map();\nvar hooks = eventHooks.concat(elementHooks);\nvar annotation = {\n id: 'annotation',\n version: version,\n beforeRegister: function beforeRegister() {\n requireVersion('chart.js', '4.0', Chart.version);\n },\n afterRegister: function afterRegister() {\n Chart.register(annotationTypes);\n },\n afterUnregister: function afterUnregister() {\n Chart.unregister(annotationTypes);\n },\n beforeInit: function beforeInit(chart) {\n chartStates.set(chart, {\n annotations: [],\n elements: [],\n visibleElements: [],\n listeners: {},\n listened: false,\n moveListened: false,\n hooks: {},\n hooked: false,\n hovered: []\n });\n },\n beforeUpdate: function beforeUpdate(chart, args, options) {\n var state = chartStates.get(chart);\n var annotations = state.annotations = [];\n var annotationOptions = options.annotations;\n\n if (isObject(annotationOptions)) {\n Object.keys(annotationOptions).forEach(function (key) {\n var value = annotationOptions[key];\n\n if (isObject(value)) {\n value.id = key;\n annotations.push(value);\n }\n });\n } else if (isArray(annotationOptions)) {\n annotations.push.apply(annotations, _toConsumableArray(annotationOptions));\n }\n\n verifyScaleOptions(annotations, chart.scales);\n },\n afterDataLimits: function afterDataLimits(chart, args) {\n var state = chartStates.get(chart);\n adjustScaleRange(chart, args.scale, state.annotations.filter(function (a) {\n return a.display && a.adjustScaleRange;\n }));\n },\n afterUpdate: function afterUpdate(chart, args, options) {\n var state = chartStates.get(chart);\n updateListeners(chart, state, options);\n updateElements(chart, state, options, args.mode);\n state.visibleElements = state.elements.filter(function (el) {\n return !el.skip && el.options.display;\n });\n updateHooks(chart, state, options);\n },\n beforeDatasetsDraw: function beforeDatasetsDraw(chart, _args, options) {\n draw(chart, 'beforeDatasetsDraw', options.clip);\n },\n afterDatasetsDraw: function afterDatasetsDraw(chart, _args, options) {\n draw(chart, 'afterDatasetsDraw', options.clip);\n },\n beforeDraw: function beforeDraw(chart, _args, options) {\n draw(chart, 'beforeDraw', options.clip);\n },\n afterDraw: function afterDraw(chart, _args, options) {\n draw(chart, 'afterDraw', options.clip);\n },\n beforeEvent: function beforeEvent(chart, args, options) {\n var state = chartStates.get(chart);\n\n if (handleEvent(state, args.event, options)) {\n args.changed = true;\n }\n },\n afterDestroy: function afterDestroy(chart) {\n chartStates.delete(chart);\n },\n _getState: function _getState(chart) {\n return chartStates.get(chart);\n },\n defaults: {\n animations: {\n numbers: {\n properties: ['x', 'y', 'x2', 'y2', 'width', 'height', 'centerX', 'centerY', 'pointX', 'pointY', 'radius'],\n type: 'number'\n }\n },\n clip: true,\n interaction: {\n mode: undefined,\n axis: undefined,\n intersect: undefined\n },\n common: {\n drawTime: 'afterDatasetsDraw',\n init: false,\n label: {}\n }\n },\n descriptors: {\n _indexable: false,\n _scriptable: function _scriptable(prop) {\n return !hooks.includes(prop) && prop !== 'init';\n },\n annotations: {\n _allKeys: false,\n _fallback: function _fallback(prop, opts) {\n return \"elements.\".concat(annotationTypes[resolveType(opts.type)].id);\n }\n },\n interaction: {\n _fallback: true\n },\n common: {\n label: {\n _indexable: isIndexable,\n _fallback: true\n },\n _indexable: isIndexable\n }\n },\n additionalOptionScopes: ['']\n};\n\nfunction draw(chart, caller, clip) {\n var ctx = chart.ctx,\n chartArea = chart.chartArea;\n var state = chartStates.get(chart);\n\n if (clip) {\n clipArea(ctx, chartArea);\n }\n\n var drawableElements = getDrawableElements(state.visibleElements, caller).sort(function (a, b) {\n return a.element.options.z - b.element.options.z;\n });\n\n var _iterator10 = _createForOfIteratorHelper(drawableElements),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var item = _step10.value;\n drawElement(ctx, chartArea, state, item);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n if (clip) {\n unclipArea(ctx);\n }\n}\n\nfunction getDrawableElements(elements, caller) {\n var drawableElements = [];\n\n var _iterator11 = _createForOfIteratorHelper(elements),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var el = _step11.value;\n\n if (el.options.drawTime === caller) {\n drawableElements.push({\n element: el,\n main: true\n });\n }\n\n if (el.elements && el.elements.length) {\n var _iterator12 = _createForOfIteratorHelper(el.elements),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var sub = _step12.value;\n\n if (sub.options.display && sub.options.drawTime === caller) {\n drawableElements.push({\n element: sub\n });\n }\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n return drawableElements;\n}\n\nfunction drawElement(ctx, chartArea, state, item) {\n var el = item.element;\n\n if (item.main) {\n invokeHook(state, el, 'beforeDraw');\n el.draw(ctx, chartArea);\n invokeHook(state, el, 'afterDraw');\n } else {\n el.draw(ctx, chartArea);\n }\n}\n\nexport { annotation as default };","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