{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.js","webpack:///./node_modules/chart.js/auto/auto.js","webpack:///./app/javascript/packs/functions.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","_defineProperty","obj","_toPropertyKey","configurable","writable","_typeof","iterator","constructor","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","length","descriptor","_createClass","protoProps","staticProps","arg","input","hint","prim","toPrimitive","undefined","res","String","Number","_toPrimitive","_toConsumableArray","arr","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","iter","from","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_createForOfIteratorHelper","allowArrayLike","it","F","done","e","_e","f","err","normalCompletion","didErr","step","next","_e2","minLen","toString","slice","test","len","arr2","noop","id","uid","isNullOrUndef","type","isObject","isNumberFinite","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","parseFloat","callback","fn","args","thisArg","apply","each","loopable","reverse","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","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","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","isNumber","isNaN","_setMinAndMaxByKey","array","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","arguments","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","ti","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","splice","forEach","_arrayUnique","items","set","Set","add","requestAnimFrame","window","requestAnimationFrame","throttled","ticking","_len2","_key2","_toLeftRightCenter","align","_alignStartEnd","_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","effects$1","lim","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","hex","h1","h2","eq","_hexString","g","isShort","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","j","ok","nk","unpacked","tkeys","replace","parseInt","unpack","transparent","toLowerCase","RGB_RE","modHSL","ratio","clone","proto","fromObject","functionParse","rgbParse","Color","this","ret","_rgb","_valid","concat","_hslString","color","weight","w2","c1","c2","w1","rgb1","rgb2","val","deg","_rotate","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","hexString","numbers","colors","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","format","formatters","values","numeric","tickValue","ticks","notation","chart","delta","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","remain","significand","includes","Ticks","overrides","getScope$1","node","_set","root","scope","Defaults","_descriptors","_appliers","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","_Object$definePropert","scopeObject","targetScopeObject","privateName","defineProperties","local","appliers","_this","defaults","_scriptable","startsWith","_indexable","_fallback","delay","duration","easing","loop","to","properties","active","resize","show","animations","visible","hide","autoPadding","padding","top","right","bottom","left","display","offset","beginAtZero","bounds","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","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","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","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","line","opts","lines","strokeWidth","strokeColor","setRenderOpts","backdrop","drawBackdrop","strokeStyle","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","oldColor","fillRect","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","matches","match","_readValueToProps","_step4","objProps","read","prop","_iterator4","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","createContext","parentContext","_createResolver","scopes","_cache","prefixes","rootScopes","getTarget","_resolve","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","descriptors","isScriptable","Error","join","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","result","pos","getRelativePosition","event","borderBox","boxSizing","paddings","borders","_getCanvasPosition","touches","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","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","_steppedInterpolation","_bezierInterpolation","cp1","cp2","getRtlAdapter","rtl","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","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","_step11","_iterator11","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","getOwnPropertyDescriptors","_get","base","_superPropBase","desc","_getPrototypeOf","_inherits","subClass","superClass","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","construct","sham","Boolean","valueOf","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","self","_assertThisInitialized","ReferenceError","_slicedToArray","_arrayWithHoles","_i","_s","_r","_arr","_n","_d","_iterableToArrayLimit","_nonIterableRest","_e3","Animator","_request","_charts","_running","_lastDate","anims","date","callbacks","numSteps","initial","currentStep","_update","_refresh","_this2","Date","now","remaining","running","draw","_active","_total","tick","pop","_notify","charts","complete","progress","cb","_getAnims","_this$_getAnims$items","reduce","acc","cur","_duration","cancel","animator","interpolators","factor","c0","valid","mix","number","Animation","cfg","currentValue","_fn","_easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","promises","Promise","rej","resolved","method","Animations","config","_properties","configure","animationOptions","animatedProps","getOwnPropertyNames","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","then","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","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_index","_top","_bottom","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","datasetElementType","dataElementType","initialize","linkScales","_stacked","addElements","isPluginEnabled","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","_len","_key","_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","label","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","sort","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","inflateAmount","_DatasetController","BarController","_super","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","bars","reset","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","_getSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","updateElement","grouped","skipNull","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","categoryPercentage","barPercentage","_this$_cachedMeta","_this$options","baseValue","minBarLength","actualBase","floating","applyStack","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","_value_","_DatasetController2","BubbleController","_super2","_this$_cachedMeta2","_this$_getSharedOptio2","_DatasetController3","DoughnutController","_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","_DatasetController4","LineController","_super4","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","animated","_this$_cachedMeta3","_this$_getSharedOptio4","_this$options2","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","stop","lastPoint","updateControlPoints","_DatasetController5","PolarAreaController","_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","_DatasetController6","RadarController","_super7","_fullLoop","pointPosition","getPointPositionForValue","_DatasetController7","ScatterController","_super8","_meta$data2","_getStartAndCountOfVi2","registry","getElement","_this$_cachedMeta4","_this$options3","controllers","_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","height1","width1","_layers","z","layoutItem","minPadding","layoutBoxes","_box","_box$options","_box$options$stackWei","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","_BasePlatform","_super9","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","fromNativeEvent","addListener","_BasePlatform2","DomPlatform","_super10","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","setAttribute","proxies","$proxies","attach","detach","isConnected","Element","_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","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","defaultRoutes","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","_Element","Scale","_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","beforeUpdate","_this$options4","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","maxLabelDiagonal","numTicks","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_this$options5","titleOpts","gridOpts","titleHeight","_this$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_this$options6","_this$options6$ticks","isRotated","labelsBelowTicks","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","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","positionAxisID","positionAxisID1","value1","limit","optsAtIndex","optsAtIndexBorder","lineColor","tickBorderDash","tickBorderDashOffset","lineCount","textOffset","tickAndPadding","hTickAndPadding","_getXAxisLabelAlignment","_getYAxisLabelAlignment","ret1","halfCount","tickTextAlign","labelPadding","_this$options8","_this$options9","_this$options9$ticks","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","_this$options10","lastLineWidth","_computeLabelArea","_computeLabelItems","_this$options11","_titleArgs","titleX","titleY","titleArgs","drawBackground","drawGrid","drawBorder","drawTitle","drawLabels","_this10","tz","gz","bz","axisID","fontSize","TypedRegistry","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","parts","routeDefaults","registerDefaults","Registry","_typedRegistries","_each","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","typedRegistry","_this11","reg","_getRegistryForType","isForType","_exec","itemReg","component","camelMethod","PluginService","_init","hook","_createDescriptors","plugin","cancelable","_oldCache","_notifyStateChanges","localIds","getPlugin","i1","allPlugins","_ref5","_step12","_iterator12","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","_ref6","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","scaleConf","error","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","_getResolver","getResolver","subPrefixes","needContext","subResolver","_step13","_iterator13","_getResolver2","resolverCache","_step14","_descriptors2","_iterator14","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","_i2","intKey","Chart","userConfig","_this12","initialCanvas","existingChart","chartOptionScopes","OffscreenCanvas","_detectPlatform","updateConfig","timeout","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","clearTimeout","setTimeout","listen","_initialize","_this$options12","bindEvents","_resizeBeforeDraw","_resize","newSize","getMaximumSize","newRatio","onResize","render","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","_step15","_iterator15","_getUniformDataChanges","_ref8","datasetCount","makeSet","changeSet","_this17","noArea","_this17$_layers","_idx","ilen1","_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","_isClickEvent","lastEvent","determineLastEvent","getElementsAtEventForMode","invalidatePlugins","version","Chart$1","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","pCenter1","innerMidAdjustedAngle","pCenter2","p8","pCenter3","outerStartX","outerStartY","outerEndX","outerEndY","fullCircles","inner","lineJoin","angleMargin","clipArc","_Element2","ArcElement","_super12","_this23","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","betweenAngles","withinRadius","_this$getProps3","_this$options13","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","_pathVars","lineMethod","stepped","getLineMethod","_ref10","_ref10$move","fastPathSegment","prevX","lastY","_pathVars2","_ref11","_ref11$move","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","_step16","segmentMethod","_iterator16","strokePathDirect","_Element3","LineElement","_super13","_this24","_points","_segments","_pointsUpdated","_findStartAndEnd","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","_segments$i","interpolated","_step17","_iterator17","inRange$1","hitRadius","_Element4","PointElement","_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","_Element5","BarElement","_super15","_this26","_this$options14","_boundingRects","addRectPath","_this$getProps6","BORDER_COLORS","BACKGROUND_COLORS","getBorderColor","getBackgroundColor","getColorizer","createPolarAreaDatasetColorizer","containsColorsDefinitions","plugin_colors","_args","_chart$config","colorizer","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","_getStartAndCountOfVi3","getStartAndCountOfVisiblePointsSimplified","threshold","decimated","samples","maxAreaPoint","maxArea","nextA","bucketWidth","sampledIndex","endIndex","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","_data$a","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","destroy","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_ref12","_ref12$x","_ref12$y","linePoints","_ref13","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","_findPoint","findPoint","unshift","interpolate","pointValue","firstValue","lastValue","simpleArc","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_source$scale","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","_ref14","_ref14$above","above","_ref14$below","clipVertical","doFill","clipY","lineLoop","_step21","_iterator21","pathSegment","_step22","_step18","tpoints","_iterator18","_step19","_iterator19","_step20","tgt","subBounds","_iterator20","fillSource","_iterator22","_ref16","src","_src$style","_src$style$background","notShape","clipBounds","interpolatedLineTo","targetLoop","_scale$chart$chartAre","_ref17","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","_Element6","Legend","_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","_step23","_iterator23","hitbox","_step24","_iterator24","hitbox1","_draw","cursor","_this29","defaultColor","halfFontSize","_getBoxSize2","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","onLeave","isListened","hoveredItem","_getLegendItemAt","sameItem","plugin_legend","_element","adjustHitBoxes","afterEvent","handleEvent","ci","_chart$legend$options","useBorderRadius","_Element7","Title","_super17","_this30","_padding","textSize","fontOpts","_this$_drawArgs","_drawArgs","plugin_title","titleBlock","createTitle","WeakMap","plugin_subtitle","positioners","average","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","getTooltipSize","tooltip","body","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","formattedValue","labelColor","labelTextColor","bodyColor","labelPointStyle","afterLabel","beforeFooter","afterFooter","invokeCallbackWithFallback","_Element8","Tooltip","_super18","_this31","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","_this32","bodyItems","scoped","_controller$getLabelA","_this33","getLabelAndValue","itemSort","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","_toTRBLCorners2","ptX","ptY","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","textColor","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","_drawColorBox","footerAlign","footerColor","tooltipSize","_toTRBLCorners3","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","_this34","_ref18","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","_willRender","Colors","Decimation","Filler","SubTitle","findOrAddLabel","addedLabels","addIfString","lastIndexOf","_getLabelForValue","_Scale","CategoryScale","_super19","_this35","_startValue","_valueRange","_addedLabels","added","_step25","_iterator25","_ref20","_index3","_this$getUserBounds2","_this$getMinMax","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","niceMin","niceMax","numSpaces","rounded","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","decimalPlaces","relativeLabelSize","_ref21","_Scale2","LinearScaleBase","_super20","_this36","_endValue","_this$getUserBounds3","setMin","setMax","minSign","maxSign","stepSize","computeTickLimit","getTickLimit","_maxDigits","_LinearScaleBase","LinearScale","_super21","_this$getMinMax2","handleTickRangeOptions","changeExponent","isMajor","tickVal","steps","rangeExp","rangeStep","generateTicks","_ref22","minExp","exp","startExp","lastTick","_Scale3","LogarithmicScale","_super22","_this37","_zero","_this$getMinMax3","_this$getUserBounds4","getTickBackdropHeight","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","_LinearScaleBase2","RadialLinearScale","_super23","_this38","_this$getMinMax4","_this39","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","_this$_pointLabelItem","_this$options16","_this40","_scale$_pointLabelIte","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","_this41","animate","INTERVALS","millisecond","common","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","_parse","adapter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","_Scale4","TimeScale","_super24","_this42","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_this$getUserBounds5","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","weekday","hasWeekday","getDataTimestamps","tooltipFormat","datetime","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","span","TimeSeriesScale","_TimeScale","_super25","_this43","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","TimeSeriesScale$1","registerables","block_screen","unblock_screen","$","addClass","removeClass","setIntervalTurbolinks","myFunction","millis","myVar","setInterval","on","getIconByLeagueRule","league_rule_id","clearChart","canvasId","previousChart","createChart","chartType","normalizeString","trim","getKey","entity","existsInLocal","localStorage","getItem","serialized","loadJSONFromLocal","timestamp","ttl","removeItem","saveJSONToLocal","jsonObject","setItem","loadOptionsFromLocal","saveOptionsToLocal","copyToClipboard","textToCopy","onSuccess","onError","navigator","clipboard","writeText","message","clipboardItem","ClipboardItem","someAsyncMethod","Blob","write","clipboardData","setData","preventDefault","execCommand"],"mappings":"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","file":"js/functions-00783d0acc048b8c1944.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 = 6);\n","function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\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.\"); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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; } } }; }\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); }\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 * Chart.js v4.0.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */\nfunction noop() {\n /* noop */}\n/**\n * Returns a unique id, sequentially generated from a global variable.\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 */\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 */\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n var type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\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 */\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 */\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 */\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 */\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nvar toPercentage = function toPercentage(value, dimension) {\n return typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\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 */\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n var i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\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 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 */\nfunction _elementsEqual(a0, a1) {\n var i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\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 */\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\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 for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\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 */\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n var tval = target[key];\n var sval = source[key];\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$1(sval);\n }\n}\nfunction merge(target, source, options) {\n var sources = isArray(source) ? source : [source];\n var ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n var merger = options.merger || _merger;\n var current;\n for (var i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n var keys = Object.keys(current);\n for (var k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options);\n }\n }\n return target;\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 */\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n var tval = target[key];\n var sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\n/**\n * @private\n */\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\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 */\nfunction _splitKey(key) {\n var parts = key.split('.');\n var keys = [];\n var tmp = '';\n var _iterator = _createForOfIteratorHelper(parts),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var part = _step.value;\n tmp += part;\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 return keys;\n}\nfunction _getKeyResolver(key) {\n var keys = _splitKey(key);\n return function (obj) {\n var _iterator2 = _createForOfIteratorHelper(keys),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var k = _step2.value;\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n var resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nvar defined = function defined(value) {\n return typeof value !== 'undefined';\n};\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nvar setsEqual = function setsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n var _iterator3 = _createForOfIteratorHelper(a),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var item = _step3.value;\n if (!b.has(item)) {\n return false;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\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;\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 */\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 */\nfunction _factorize(value) {\n var result = [];\n var sqrt = Math.sqrt(value);\n var i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort(function (a, b) {\n return a - b;\n }).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(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 */\nfunction _setMinAndMaxByKey(array, target, property) {\n var i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\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 */\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n var e = 1;\n var p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\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 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}\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 */\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 */\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n var a = _normalizeAngle(angle);\n var s = _normalizeAngle(start);\n var e = _normalizeAngle(end);\n var angleToStart = _normalizeAngle(s - a);\n var angleToEnd = _normalizeAngle(e - a);\n var startToAngle = _normalizeAngle(a - s);\n var endToAngle = _normalizeAngle(a - e);\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 */\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\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 */\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}\nfunction _lookup(table, value, cmp) {\n cmp = cmp || function (index) {\n return table[index] < value;\n };\n var hi = table.length - 1;\n var lo = 0;\n var mid;\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\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 */\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 */\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 */\nfunction _filterBetween(values, min, max) {\n var start = 0;\n var end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\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 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 var res = base.apply(this, args);\n array._chartjs.listeners.forEach(function (object) {\n if (typeof object[method] === 'function') {\n object[method].apply(object, args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n var stub = array._chartjs;\n if (!stub) {\n return;\n }\n var listeners = stub.listeners;\n var index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach(function (key) {\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */\nfunction _arrayUnique(items) {\n var set = new Set();\n var i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/\nvar requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\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 */\nfunction throttled(fn, thisArg) {\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 if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, function () {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\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 if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\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 */\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 */\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 */\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n var pointCount = points.length;\n var start = 0;\n var count = pointCount;\n if (meta._sorted) {\n var iScale = meta.iScale,\n _parsed = meta._parsed;\n var axis = iScale.axis;\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 if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @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 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 */\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 if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\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}\nvar atEdge = function atEdge(t) {\n return t === 0 || t === 1;\n};\nvar elasticIn = function elasticIn(t, s, p) {\n return -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\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 */\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 if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\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 if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\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};\nvar effects$1 = effects;\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nvar lim = function lim(v, l, h) {\n return Math.max(Math.min(v, h), l);\n};\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\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};\nvar hex = _toConsumableArray('0123456789ABCDEF');\nvar h1 = function h1(b) {\n return hex[b & 0xF];\n};\nvar h2 = function h2(b) {\n return hex[(b & 0xF0) >> 4] + hex[b & 0xF];\n};\nvar eq = function eq(b) {\n return (b & 0xF0) >> 4 === (b & 0xF);\n};\nvar isShort = function isShort(v) {\n return eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n};\nfunction hexParse(str) {\n var len = str.length;\n var ret;\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 return ret;\n}\nvar alpha = function alpha(a, f) {\n return a < 255 ? f(a) : '';\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}\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n var a = s * Math.min(l, 1 - l);\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 return [f(0), f(8), f(4)];\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 return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n var rgb = hsl2rgbn(h, 1, 0.5);\n var i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\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 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 return [h | 0, s || 0, l];\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}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n var m = HUE_RE.exec(str);\n var a = 255;\n var v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n var h = hue(+m[2]);\n var p1 = +m[3] / 100;\n var p2 = +m[4] / 100;\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 return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\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}\nfunction _hslString(v) {\n if (!v) {\n return;\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}\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};\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 for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nvar names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\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}\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n var m = RGB_RE.exec(str);\n var a = 255;\n var r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n var v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\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}\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}\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};\nvar from = function from(v) {\n return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\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}\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}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\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 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 return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nvar Color = /*#__PURE__*/function () {\n function Color(input) {\n _classCallCheck(this, Color);\n if (input instanceof Color) {\n return input;\n }\n var type = _typeof(input);\n var v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\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 if (v) {\n v.a = b2n(v.a);\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 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 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 return this;\n }\n }]);\n return Color;\n}();\nfunction index_esm(input) {\n return new Color(input);\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 return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\nvar numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nvar colors = ['color', 'borderColor', 'backgroundColor'];\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}\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}\nvar intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n var cacheKey = locale + JSON.stringify(options);\n var formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\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 var locale = this.chart.options.locale;\n var notation;\n var delta = tickValue;\n if (ticks.length > 1) {\n var maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n var logDelta = log10(Math.abs(delta));\n var numDecimal = 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 var remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\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 return '';\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 if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {\n formatters: formatters\n};\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\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}\nvar overrides = Object.create(null);\nvar descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n var keys = key.split('.');\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 return node;\n}\nfunction _set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nvar Defaults = /*#__PURE__*/function () {\n function Defaults(_descriptors, _appliers) {\n _classCallCheck(this, Defaults);\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 this.devicePixelRatio = function (context) {\n return context.chart.platform.getDevicePixelRatio();\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 this.hoverBackgroundColor = function (ctx, options) {\n return getHoverColor(options.backgroundColor);\n };\n this.hoverBorderColor = function (ctx, options) {\n return getHoverColor(options.borderColor);\n };\n this.hoverColor = function (ctx, options) {\n return getHoverColor(options.color);\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 _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 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 if (isObject(local)) {\n return Object.assign({}, target, local);\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 appliers.forEach(function (apply) {\n return apply(_this);\n });\n }\n }]);\n return Defaults;\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]);\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n var textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\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 if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\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 for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n var gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\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}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\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 if (style && _typeof(style) === 'object') {\n type = style.toString();\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 if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\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 ctx.closePath();\n break;\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 case 'rectRounded':\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 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 rad += QUARTER_PI;\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 case 'crossRot':\n rad += QUARTER_PI;\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 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 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 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 ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\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}\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}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\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 ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\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}\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 for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\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}\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}\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;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\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 * 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 */\nfunction toLineHeight(value, size) {\n var matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nvar numberOrZero = function numberOrZero(v) {\n return +v || 0;\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 var _iterator4 = _createForOfIteratorHelper(keys),\n _step4;\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 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 */\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 */\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 */\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 */\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n var size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n var style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\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 */\nfunction resolve(inputs, context, index, info) {\n var cacheable = true;\n var i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nfunction _addGrace(minmax, grace, beginAtZero) {\n var min = minmax.min,\n max = minmax.max;\n var change = toDimension(grace, (max - min) / 2);\n var keepZero = function keepZero(value, add) {\n return beginAtZero && value === 0 ? 0 : value + add;\n };\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\nfunction _createResolver(scopes) {\n var _cache;\n var prefixes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n var rootScopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : scopes;\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 if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n var cache = (_cache = {}, _defineProperty(_cache, Symbol.toStringTag, 'Object'), _defineProperty(_cache, \"_cacheable\", true), _defineProperty(_cache, \"_scopes\", scopes), _defineProperty(_cache, \"_rootScopes\", rootScopes), _defineProperty(_cache, \"_fallback\", fallback), _defineProperty(_cache, \"_getTarget\", getTarget), _defineProperty(_cache, \"override\", function override(scope) {\n return _createResolver([scope].concat(_toConsumableArray(scopes)), prefixes, rootScopes, fallback);\n }), _cache);\n return new Proxy(cache, {\n deleteProperty: function deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get: function get(target, prop) {\n return _cached(target, prop, function () {\n return _resolveWithPrefixes(prop, prefixes, scopes, target);\n });\n },\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf: function getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has: function has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys: function ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set: function set(target, prop, value) {\n var storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\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 deleteProperty: function deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get: function get(target, prop, receiver) {\n return _cached(target, prop, function () {\n return _resolveWithContext(target, prop, receiver);\n });\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 getPrototypeOf: function getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has: function has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys: function ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set: function set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\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 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 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}\nvar readKey = function readKey(prefix, name) {\n return prefix ? prefix + _capitalize(name) : name;\n};\nvar needsSubResolver = function needsSubResolver(prop, value) {\n return isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\n};\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n var value = resolve();\n target[prop] = value;\n return value;\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];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n var _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n _stack = target._stack;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack[\"delete\"](prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\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 if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n var arr = value;\n var scopes = _proxy._scopes.filter(function (s) {\n return s !== arr;\n });\n value = [];\n var _iterator5 = _createForOfIteratorHelper(arr),\n _step5;\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 return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nvar getScope = function getScope(key, parent) {\n return key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n};\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n var _iterator6 = _createForOfIteratorHelper(parentScopes),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var parent = _step6.value;\n var scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n var fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return false;\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 if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback, function () {\n return subGetTarget(resolver, prop, value);\n });\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n var parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n var target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n var value;\n var _iterator7 = _createForOfIteratorHelper(prefixes),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var prefix = _step7.value;\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\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}\nfunction _resolve(key, scopes) {\n var _iterator8 = _createForOfIteratorHelper(scopes),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var scope = _step8.value;\n if (!scope) {\n continue;\n }\n var value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n}\nfunction getKeysFromAllScopes(target) {\n var keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n var set = new Set();\n var _iterator9 = _createForOfIteratorHelper(scopes),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var scope = _step9.value;\n var _iterator10 = _createForOfIteratorHelper(Object.keys(scope).filter(function (k) {\n return !k.startsWith('_');\n })),\n _step10;\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 return Array.from(set);\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 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 return parsed;\n}\nvar EPSILON = Number.EPSILON || 1e-14;\nvar getPoint = function getPoint(points, i) {\n return i < points.length && !points[i].skip && points[i];\n};\nvar getValueAxis = function getValueAxis(indexAxis) {\n return indexAxis === 'x' ? 'y' : 'x';\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);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n var fa = t * s01; // scaling factor for triangle Ta\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 */\nfunction monotoneAdjust(points, deltaK, mK) {\n var pointsLen = points.length;\n var alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n var pointAfter = getPoint(points, 0);\n for (var i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\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 if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\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 for (var i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n var iPixel = pointCurrent[indexAxis];\n var vPixel = pointCurrent[valueAxis];\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 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 */\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);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n var i, pointBefore, pointCurrent;\n var pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n var slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\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 monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n var i, ilen, point, inArea, inAreaPrev;\n var inAreaNext = _isPointInArea(points[0], area);\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 if (!inArea) {\n continue;\n }\n point = points[i];\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 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 */\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n var i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter(function (pt) {\n return !pt.skip;\n });\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n var prev = loop ? points[points.length - 1] : points[0];\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 if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\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\").default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */\nfunction _getParentNode(domNode) {\n var parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n var valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\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 return valueInPixels;\n}\nvar getComputedStyle = function getComputedStyle(element) {\n return element.ownerDocument.defaultView.getComputedStyle(element, null);\n};\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nvar positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n var result = {};\n suffix = suffix ? '-' + suffix : '';\n for (var i = 0; i < 4; i++) {\n var pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\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 */\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 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 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 */\nfunction getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\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 var _getCanvasPosition = getCanvasPosition(event, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\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 if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\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}\nfunction getContainerSize(canvas, width, height) {\n var maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n var container = _getParentNode(canvas);\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 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 return {\n width: width,\n height: height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nvar round1 = function round1(v) {\n return Math.round(v * 10) / 10;\n};\n// eslint-disable-next-line complexity\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 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 width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\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 var maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\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 */\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 = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n var canvas = chart.canvas;\n // 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 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 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 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 */\nvar supportsEventListenerOptions = function () {\n var passiveSupported = false;\n try {\n var options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // continue regardless of error\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 */\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/**\n * @private\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 */\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 */\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 var a = _pointInLine(p1, cp1, t);\n var b = _pointInLine(cp1, cp2, t);\n var c = _pointInLine(cp2, p2, t);\n var d = _pointInLine(a, b, t);\n var e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\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 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};\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};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n var style, original;\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}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\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}\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}\nfunction getSegment(segment, points, bounds) {\n var property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n var _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n var count = points.length;\n var start = segment.start,\n end = segment.end,\n loop = segment.loop;\n var i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start: start,\n end: end,\n loop: loop,\n style: segment.style\n };\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n var property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n var count = points.length;\n var _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n var _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n var result = [];\n var inside = false;\n var subStart = null;\n var value, point, prevValue;\n var startIsBefore = function startIsBefore() {\n return between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n };\n var endIsBefore = function endIsBefore() {\n return compare(endBound, value) === 0 || between(endBound, prevValue, value);\n };\n var shouldStart = function shouldStart() {\n return inside || startIsBefore();\n };\n var shouldStop = function shouldStop() {\n return !inside || endIsBefore();\n };\n for (var i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\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 prev = i;\n prevValue = value;\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 return result;\n}\nfunction _boundSegments(line, bounds) {\n var result = [];\n var segments = line.segments;\n for (var i = 0; i < segments.length; i++) {\n var sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push.apply(result, _toConsumableArray(sub));\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n var start = 0;\n var end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {\n start: start,\n end: end\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 for (end = start + 1; end <= max; ++end) {\n var cur = points[end % count];\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 if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop: loop\n });\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n var points = line.points;\n var spanGaps = line.options.spanGaps;\n var count = points.length;\n if (!count) {\n return [];\n }\n var loop = !!line._loop;\n var _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n if (spanGaps === true) {\n return splitByStyles(line, [{\n start: start,\n end: end,\n loop: loop\n }], points, segmentOptions);\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}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n var chartContext = line._chart.getContext();\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 function addStyle(s, e, l, st) {\n var dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\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 var _iterator11 = _createForOfIteratorHelper(segments),\n _step11;\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 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 if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\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 return result;\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}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\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$1 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$1 as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\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; }\nfunction _get() { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get.bind(); } 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); }\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\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); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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); }; }\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); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\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; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\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.\"); }\nfunction _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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; } } }; }\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); }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\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.\"); }\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); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\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, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n/*!\n * Chart.js v4.0.1\n * https://www.chartjs.org\n * (c) 2022 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, T as TAU, m as toPercentage, n as toDimension, 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';\nexport { aL as Ticks, d as defaults } from './chunks/helpers.segment.js';\nvar Animator = /*#__PURE__*/function () {\n function Animator() {\n _classCallCheck(this, Animator);\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\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 if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, function () {\n _this._update();\n _this._request = null;\n if (_this._running) {\n _this._refresh();\n }\n });\n }\n }, {\n key: \"_update\",\n value: function _update() {\n var _this2 = this;\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n var remaining = 0;\n this._charts.forEach(function (anims, chart) {\n if (!anims.running || !anims.items.length) {\n return;\n }\n var items = anims.items;\n var i = items.length - 1;\n var draw = false;\n var item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n _this2._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n _this2._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\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 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 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 if (!items || !items.length) {\n return;\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 if (!anims) {\n return;\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 this._refresh();\n }\n }, {\n key: \"running\",\n value: function running(chart) {\n if (!this._running) {\n return false;\n }\n var anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n }, {\n key: \"stop\",\n value: function stop(chart) {\n var anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n var items = anims.items;\n var i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\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 return Animator;\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 var c1 = c0.valid && _color(to || transparent);\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};\nvar Animation = /*#__PURE__*/function () {\n function Animation(cfg, target, prop, to) {\n _classCallCheck(this, Animation);\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 _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 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 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 if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\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 for (var i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n }]);\n return Animation;\n}();\nvar Animations = /*#__PURE__*/function () {\n function Animations(chart, config) {\n _classCallCheck(this, Animations);\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n _createClass(Animations, [{\n key: \"configure\",\n value: function configure(config) {\n if (!isObject(config)) {\n return;\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 if (!isObject(cfg)) {\n return;\n }\n var resolved = {};\n var _iterator = _createForOfIteratorHelper(animationOptions),\n _step;\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 (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 if (!options) {\n return [];\n }\n var animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(function () {\n target.options = newOptions;\n }, function () {});\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 for (i = props.length - 1; i >= 0; --i) {\n var prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push.apply(animations, _toConsumableArray(this._animateOptions(target, values)));\n continue;\n }\n var value = values[prop];\n var animation = running[prop];\n var cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\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 var animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n }]);\n return Animations;\n}();\nfunction awaitAll(animations, properties) {\n var running = [];\n var keys = Object.keys(properties);\n for (var i = 0; i < keys.length; i++) {\n var anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n var options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\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}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\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}\nfunction toClip(value) {\n var t, r, b, l;\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 return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n var keys = [];\n var metasets = chart._getSortedDatasetMetas(filterVisible);\n var i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\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 if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n var keys = Object.keys(data);\n var adata = new Array(keys.length);\n var i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n var stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return \"\".concat(indexScale.id, \".\").concat(valueScale.id, \".\").concat(meta.stack || meta.type);\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 return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n var subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n var _iterator2 = _createForOfIteratorHelper(vScale.getMatchingVisibleMetas(type).reverse()),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var meta = _step2.value;\n var value = stack[meta.index];\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 return null;\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 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 }\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}\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}\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}\nfunction clearStacks(meta, items) {\n var datasetIndex = meta.controller.index;\n var axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n var _iterator3 = _createForOfIteratorHelper(items),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var parsed = _step3.value;\n var stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n}\nvar isDirectUpdateMode = function isDirectUpdateMode(mode) {\n return mode === 'reset' || mode === 'none';\n};\nvar cloneIfNotShared = function cloneIfNotShared(cached, shared) {\n return shared ? cached : Object.assign({}, cached);\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};\nvar DatasetController = /*#__PURE__*/function () {\n function DatasetController(chart, datasetIndex) {\n _classCallCheck(this, DatasetController);\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 _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 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 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 var chooseId = function chooseId(axis, x, y, r) {\n return axis === 'x' ? x : axis === 'r' ? r : y;\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 if (this._data) {\n unlistenArrayEvents(this._data, this);\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 if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n var meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var meta = this._cachedMeta;\n this._dataCheck();\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 this._dataCheck();\n var oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\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 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 var isNotInOrderComparedToPrev = function isNotInOrderComparedToPrev() {\n return cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n };\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\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 for (i = 0, ilen = count; i < ilen; ++i) {\n var _parsed$i;\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 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 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 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 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 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]\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 if (stack && values) {\n stack.values = values;\n value = _applyStack(stack, parsedValue, this._cachedMeta.index);\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 var otherScale = this._getOtherScale(scale);\n var stack = createStack(canStack, meta, this.chart);\n var range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n var _getUserBounds = getUserBounds(otherScale),\n otherMin = _getUserBounds.min,\n otherMax = _getUserBounds.max;\n var i, parsed;\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 for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\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 for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\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 if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n var element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\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 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 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 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 if (cached) {\n return cloneIfNotShared(cached, sharing);\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 var context = function context() {\n return _this3.getContext(index, active);\n };\n var values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\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 if (cached) {\n return cached;\n }\n var options;\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 var animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n }, {\n key: \"getSharedOptions\",\n value: function getSharedOptions(options) {\n if (!options.$shared) {\n return;\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 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 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 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 var _iterator4 = _createForOfIteratorHelper(this._syncList),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var _ref3 = _step4.value;\n var _ref2 = _slicedToArray(_ref3, 3);\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 this._syncList = [];\n var numMeta = elements.length;\n var numData = data.length;\n var count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\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 var move = function move(arr) {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\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 if (this._parsing) {\n var removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\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 this[method](arg1, arg2);\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 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 var newCount = arguments.length - 2;\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 return DatasetController;\n}();\nDatasetController.defaults = {};\nDatasetController.datasetElementType = null;\nDatasetController.dataElementType = null;\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n var visibleMetas = scale.getMatchingVisibleMetas(type);\n var values = [];\n for (var i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort(function (a, b) {\n return a - b;\n }));\n }\n return scale._cache.$bar;\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 var updateMinAndPrev = function updateMinAndPrev() {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n var thickness = options.barThickness;\n var size, ratio;\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 return {\n chunk: size / stackCount,\n ratio: ratio,\n start: ruler.pixels[index] - size / 2\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 if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\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}\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 if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\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}\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 return item;\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 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 return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n var reverse, start, end, top, bottom;\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 if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start: start,\n end: end,\n reverse: reverse,\n top: top,\n bottom: bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n var edge = options.borderSkipped;\n var res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\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 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 if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\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 res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\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 return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, _ref4, ratio) {\n var inflateAmount = _ref4.inflateAmount;\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nvar BarController = /*#__PURE__*/function (_DatasetController) {\n _inherits(BarController, _DatasetController);\n var _super = _createSuper(BarController);\n function BarController() {\n _classCallCheck(this, BarController);\n return _super.apply(this, arguments);\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 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 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 var custom = parsed._custom;\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 _get(_getPrototypeOf(BarController.prototype), \"initialize\", this).call(this);\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 var ruler = this._getRuler();\n var _this$_getSharedOptio = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio.sharedOptions,\n includeOptions = _this$_getSharedOptio.includeOptions;\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 var ipixels = this._calculateBarIndexPixels(i, ruler);\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 if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\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 var skipNull = function skipNull(meta) {\n var parsed = meta.controller.getParsed(dataIndex);\n var val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n var _iterator5 = _createForOfIteratorHelper(metasets),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var meta = _step5.value;\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n if (!stacks.length) {\n stacks.push(undefined);\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 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 for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\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 _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 if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n var startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n var base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\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 (base === vScale.getPixelForValue(actualBase)) {\n var halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\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 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 var stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\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 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 for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n }]);\n return BarController;\n}(DatasetController);\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};\nvar BubbleController = /*#__PURE__*/function (_DatasetController2) {\n _inherits(BubbleController, _DatasetController2);\n var _super2 = _createSuper(BubbleController);\n function BubbleController() {\n _classCallCheck(this, BubbleController);\n return _super2.apply(this, arguments);\n }\n _createClass(BubbleController, [{\n key: \"initialize\",\n value: function initialize() {\n this.enableOptionSharing = true;\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 for (var i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\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 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 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 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 return parsed;\n }\n }, {\n key: \"getMaxOverflow\",\n value: function getMaxOverflow() {\n var data = this._cachedMeta.data;\n var max = 0;\n for (var i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\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 var _this$_getSharedOptio2 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio2.sharedOptions,\n includeOptions = _this$_getSharedOptio2.includeOptions;\n var iAxis = iScale.axis;\n var vAxis = vScale.axis;\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 if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\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 var values = _get(_getPrototypeOf(BubbleController.prototype), \"resolveDataElementOptions\", this).call(this, index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n var radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n }]);\n return BubbleController;\n}(DatasetController);\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};\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n var ratioX = 1;\n var ratioY = 1;\n var offsetX = 0;\n var offsetY = 0;\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 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 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 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 return {\n ratioX: ratioX,\n ratioY: ratioY,\n offsetX: offsetX,\n offsetY: offsetY\n };\n}\nvar DoughnutController = /*#__PURE__*/function (_DatasetController3) {\n _inherits(DoughnutController, _DatasetController3);\n var _super3 = _createSuper(DoughnutController);\n function DoughnutController(chart, datasetIndex) {\n var _this4;\n _classCallCheck(this, DoughnutController);\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 _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 if (this._parsing === false) {\n meta._parsed = data;\n } else {\n var getter = function getter(i) {\n return +data[i];\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 getter = function getter(i) {\n return +resolveObjectKey(data[i], key);\n };\n }\n var i, ilen;\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 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 var rotation = controller._getRotation();\n var circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\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 var chartWeight = this._getRingWeight(this.index);\n var _this$_getRotationExt = this._getRotationExtents(),\n circumference = _this$_getRotationExt.circumference,\n rotation = _this$_getRotationExt.rotation;\n var _getRatioAndOffset = getRatioAndOffset(rotation, circumference, cutout),\n ratioX = _getRatioAndOffset.ratioX,\n ratioY = _getRatioAndOffset.ratioY,\n offsetX = _getRatioAndOffset.offsetX,\n offsetY = _getRatioAndOffset.offsetY;\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 var radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\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 var circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\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 var _this$_getSharedOptio3 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio3.sharedOptions,\n includeOptions = _this$_getSharedOptio3.includeOptions;\n var startAngle = this._getRotation();\n var i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n var circumference = this._circumference(i, reset);\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 if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\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 for (i = 0; i < metaData.length; i++) {\n var value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n }, {\n key: \"calculateCircumference\",\n value: function calculateCircumference(value) {\n var total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\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 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 if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n }, {\n key: \"getMaxOffset\",\n value: function getMaxOffset(arcs) {\n var max = 0;\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 return max;\n }\n }, {\n key: \"_getRingWeightOffset\",\n value: function _getRingWeightOffset(datasetIndex) {\n var ringWeightOffset = 0;\n for (var i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\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 return DoughnutController;\n}(DatasetController);\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';\n }\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels: function generateLabels(chart) {\n var data = chart.data;\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 return [];\n }\n },\n onClick: function onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n};\nvar LineController = /*#__PURE__*/function (_DatasetController4) {\n _inherits(LineController, _DatasetController4);\n var _super4 = _createSuper(LineController);\n function LineController() {\n _classCallCheck(this, LineController);\n return _super4.apply(this, arguments);\n }\n _createClass(LineController, [{\n key: \"initialize\",\n value: function initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\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 var _getStartAndCountOfVi = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi.start,\n count = _getStartAndCountOfVi.count;\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\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 if (!this.options.showLine) {\n options.borderWidth = 0;\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 var _this$_getSharedOptio4 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio4.sharedOptions,\n includeOptions = _this$_getSharedOptio4.includeOptions;\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 for (var i = 0; i < pointsCount; ++i) {\n var point = points[i];\n var properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\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 if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\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 if (!data.length) {\n return border;\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 _get(_getPrototypeOf(LineController.prototype), \"draw\", this).call(this);\n }\n }]);\n return LineController;\n}(DatasetController);\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};\nvar PolarAreaController = /*#__PURE__*/function (_DatasetController5) {\n _inherits(PolarAreaController, _DatasetController5);\n var _super5 = _createSuper(PolarAreaController);\n function PolarAreaController(chart, datasetIndex) {\n var _this5;\n _classCallCheck(this, PolarAreaController);\n _this5 = _super5.call(this, chart, datasetIndex);\n _this5.innerRadius = undefined;\n _this5.outerRadius = undefined;\n return _this5;\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 this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n }, {\n key: \"getMinMax\",\n value: function getMinMax() {\n var _this6 = this;\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 if (!isNaN(parsed) && _this6.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\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 for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n var arc = arcs[i];\n var startAngle = angle;\n var endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n var outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\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 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 return PolarAreaController;\n}(DatasetController);\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 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 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};\nvar PieController = /*#__PURE__*/function (_DoughnutController) {\n _inherits(PieController, _DoughnutController);\n var _super6 = _createSuper(PieController);\n function PieController() {\n _classCallCheck(this, PieController);\n return _super6.apply(this, arguments);\n }\n return _createClass(PieController);\n}(DoughnutController);\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\nvar RadarController = /*#__PURE__*/function (_DatasetController6) {\n _inherits(RadarController, _DatasetController6);\n var _super7 = _createSuper(RadarController);\n function RadarController() {\n _classCallCheck(this, RadarController);\n return _super7.apply(this, arguments);\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 if (mode !== 'resize') {\n var options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\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 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 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 return RadarController;\n}(DatasetController);\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};\nvar ScatterController = /*#__PURE__*/function (_DatasetController7) {\n _inherits(ScatterController, _DatasetController7);\n var _super8 = _createSuper(ScatterController);\n function ScatterController() {\n _classCallCheck(this, ScatterController);\n return _super8.apply(this, arguments);\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 var _getStartAndCountOfVi2 = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi2.start,\n count = _getStartAndCountOfVi2.count;\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\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 }\n this.updateElements(points, start, count, mode);\n }\n }, {\n key: \"addElements\",\n value: function addElements() {\n var showLine = this.options.showLine;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\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 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 if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\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 if (!this.options.showLine) {\n var max = 0;\n for (var i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n var dataset = meta.dataset;\n var border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\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 return ScatterController;\n}(DatasetController);\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 PolarAreaController: PolarAreaController,\n PieController: PieController,\n RadarController: RadarController,\n ScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\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 */\nvar DateAdapterBase = /*#__PURE__*/function () {\n function DateAdapterBase(options) {\n _classCallCheck(this, DateAdapterBase);\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\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 return DateAdapterBase;\n}();\nvar adapters = {\n _date: DateAdapterBase\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 if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n var lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\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 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 return {\n lo: 0,\n hi: data.length - 1\n };\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n var metasets = chart.getSortedVisibleDatasetMetas();\n var value = position[axis];\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 var _binarySearch = binarySearch(metasets[i], axis, value, intersect),\n lo = _binarySearch.lo,\n hi = _binarySearch.hi;\n for (var j = lo; j <= hi; ++j) {\n var element = data[j];\n if (!element.skip) {\n handler(element, _index2, j);\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}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n var items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n var evaluationFunc = function evaluationFunc(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\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 evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n var items = [];\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 var _getAngleFromPoint = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n }),\n angle = _getAngleFromPoint.angle;\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element: element,\n datasetIndex: datasetIndex,\n index: index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n var items = [];\n var distanceMetric = getDistanceMetricForAxis(axis);\n var minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n var inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n var center = element.getCenterPoint(useFinalPosition);\n var pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n var distance = distanceMetric(position, center);\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 evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n var items = [];\n var rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n var intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, function (element, datasetIndex, index) {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element: element,\n datasetIndex: datasetIndex,\n index: index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\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 if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach(function (meta) {\n var index = items[0].index;\n var element = meta.data[index];\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 if (items.length > 0) {\n var datasetIndex = items[0].datasetIndex;\n var data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\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 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'];\nfunction filterByPosition(array, position) {\n return array.filter(function (v) {\n return v.pos === position;\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}\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}\nfunction wrapBoxes(boxes) {\n var layoutBoxes = [];\n var i, ilen, box, pos, stack, stackWeight;\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 return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n var stacks = {};\n var _iterator6 = _createForOfIteratorHelper(layouts),\n _step6;\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 if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n var _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n return stacks;\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 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 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 return stacks;\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}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\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}\nfunction updateDims(chartArea, params, layout, stacks) {\n var pos = layout.pos,\n box = layout.box;\n var maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\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 if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\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}\nfunction handleMaxPadding(chartArea) {\n var maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n var change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n var maxPadding = chartArea.maxPadding;\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 return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n var refitBoxes = [];\n var i, ilen, layout, box, refit, changed;\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 var _updateDims = updateDims(chartArea, params, layout, stacks),\n same = _updateDims.same,\n other = _updateDims.other;\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\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}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n var userPadding = params.padding;\n var x = chartArea.x,\n y = chartArea.y;\n var _iterator7 = _createForOfIteratorHelper(boxes),\n _step7;\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 if (layout.horizontal) {\n var width = chartArea.w * weight;\n var height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\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 stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n var height1 = chartArea.h * weight;\n var width1 = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width1, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width1, height1);\n }\n stack.start = x;\n stack.placed += height1;\n x = box.right;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox: function addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function () {\n return [{\n z: 0,\n draw: function draw(chartArea) {\n item.draw(chartArea);\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 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 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 if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\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};\nvar BasePlatform = /*#__PURE__*/function () {\n function BasePlatform() {\n _classCallCheck(this, BasePlatform);\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 return BasePlatform;\n}();\nvar BasicPlatform = /*#__PURE__*/function (_BasePlatform) {\n _inherits(BasicPlatform, _BasePlatform);\n var _super9 = _createSuper(BasicPlatform);\n function BasicPlatform() {\n _classCallCheck(this, BasicPlatform);\n return _super9.apply(this, arguments);\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 return BasicPlatform;\n}(BasePlatform);\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};\nvar isNullOrEmpty = function isNullOrEmpty(value) {\n return value === null || value === '';\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 if (isNullOrEmpty(renderWidth)) {\n var displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\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 if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nvar eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n var type = EVENT_TYPES[event.type] || event.type;\n var _getRelativePosition = getRelativePosition(event, chart),\n x = _getRelativePosition.x,\n y = _getRelativePosition.y;\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}\nfunction nodeListContains(nodeList, canvas) {\n var _iterator8 = _createForOfIteratorHelper(nodeList),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var node = _step8.value;\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}\nfunction createAttachObserver(chart, type, listener) {\n var canvas = chart.canvas;\n var observer = new MutationObserver(function (entries) {\n var trigger = false;\n var _iterator9 = _createForOfIteratorHelper(entries),\n _step9;\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 if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n var canvas = chart.canvas;\n var observer = new MutationObserver(function (entries) {\n var trigger = false;\n var _iterator10 = _createForOfIteratorHelper(entries),\n _step10;\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 if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nvar drpListeningCharts = new Map();\nvar oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n var dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach(function (resize, chart) {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts[\"delete\"](chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n var canvas = chart.canvas;\n var container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n var resize = throttled(function (width, height) {\n var w = container.clientWidth;\n listener(width, height);\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 if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\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}\nvar DomPlatform = /*#__PURE__*/function (_BasePlatform2) {\n _inherits(DomPlatform, _BasePlatform2);\n var _super10 = _createSuper(DomPlatform);\n function DomPlatform() {\n _classCallCheck(this, DomPlatform);\n return _super10.apply(this, arguments);\n }\n _createClass(DomPlatform, [{\n key: \"acquireContext\",\n value: function acquireContext(canvas, aspectRatio) {\n var context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n }, {\n key: \"releaseContext\",\n value: function releaseContext(context) {\n var canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n var initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(function (prop) {\n var value = initial[prop];\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 if (!proxy) {\n return;\n }\n var handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n var handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n }, {\n key: \"getDevicePixelRatio\",\n value: function getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n }, {\n key: \"getMaximumSize\",\n value: function getMaximumSize(canvas, width, height, aspectRatio) {\n return _getMaximumSize(canvas, width, height, aspectRatio);\n }\n }, {\n key: \"isAttached\",\n value: function isAttached(canvas) {\n var container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n }]);\n return DomPlatform;\n}(BasePlatform);\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\nvar Element = /*#__PURE__*/function () {\n function Element() {\n _classCallCheck(this, Element);\n this.active = false;\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 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 var anims = this.$animations;\n if (!_final || !anims) {\n // let's not create an object, if not needed\n return this;\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 return Element;\n}();\nElement.defaults = {};\nElement.defaultRoutes = undefined;\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 if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n var spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\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 for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n var offset = scale.options.offset;\n var tickLength = scale._tickSize();\n var maxScale = scale._length / tickLength + (offset ? 0 : 1);\n var maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n var evenMajorSpacing = getEvenSpacing(majorIndices);\n var spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n var factors = _factorize(evenMajorSpacing);\n for (var i = 0, ilen = factors.length - 1; i < ilen; i++) {\n var factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n var result = [];\n var i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\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 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}\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 if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\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}\nfunction getEvenSpacing(arr) {\n var len = arr.length;\n var i, diff;\n if (len < 2) {\n return false;\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 return diff;\n}\nvar reverseAlign = function reverseAlign(align) {\n return align === 'left' ? 'right' : align === 'right' ? 'left' : align;\n};\nvar offsetFromEdge = function offsetFromEdge(scale, edge, offset) {\n return edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\n};\nfunction sample(arr, numItems) {\n var result = [];\n var increment = arr.length / numItems;\n var len = arr.length;\n var i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\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 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 lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\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 if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\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}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale: scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick: tick,\n index: index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n var ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\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 if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\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 maxWidth = right - left;\n } else {\n if (isObject(position)) {\n var positionAxisID1 = Object.keys(position)[0];\n var value1 = position[positionAxisID1];\n titleX = scales[positionAxisID1].getPixelForValue(value1) - 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 titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX: titleX,\n titleY: titleY,\n maxWidth: maxWidth,\n rotation: rotation\n };\n}\nvar Scale = /*#__PURE__*/function (_Element) {\n _inherits(Scale, _Element);\n var _super11 = _createSuper(Scale);\n function Scale(cfg) {\n var _this9;\n _classCallCheck(this, Scale);\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 _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 var range;\n if (minDefined && maxDefined) {\n return {\n min: min,\n max: max\n };\n }\n var metas = this.getMatchingVisibleMetas();\n for (var i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\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: \"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 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 this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n var samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\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 if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\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 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 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 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 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 = this.ticks.length;\n var minRotation = tickOpts.minRotation || 0;\n var maxRotation = tickOpts.maxRotation;\n var labelRotation = minRotation;\n var tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n var labelSizes = this._getLabelSizes();\n var maxLabelWidth = labelSizes.widest.width;\n var maxLabelHeight = labelSizes.highest.height;\n var maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\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 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 var display = this._isVisible();\n var isHorizontal = this.isHorizontal();\n if (display) {\n var titleHeight = getTitleHeight(titleOpts, chart.options.font);\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 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 var tickPadding = tickOpts.padding * 2;\n var angleRadians = toRadians(this.labelRotation);\n var cos = Math.cos(angleRadians);\n var sin = Math.sin(angleRadians);\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 this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\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 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 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 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 if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\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 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 this.afterTickToLabelConversion();\n }\n }, {\n key: \"_getLabelSizes\",\n value: function _getLabelSizes() {\n var labelSizes = this._labelSizes;\n if (!labelSizes) {\n var sampleSize = this.options.ticks.sampleSize;\n var ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n }, {\n key: \"_computeLabelSizes\",\n value: function _computeLabelSizes(ticks, length) {\n var ctx = this.ctx,\n caches = this._longestTextCache;\n var widths = [];\n var heights = [];\n var widestLabelSize = 0;\n var highestLabelSize = 0;\n var i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\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 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 if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\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 garbageCollect(caches, length);\n var widest = widths.indexOf(widestLabelSize);\n var highest = heights.indexOf(highestLabelSize);\n var valueAt = function valueAt(idx) {\n return {\n width: widths[idx] || 0,\n height: heights[idx] || 0\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 if (index < 0 || index > ticks.length - 1) {\n return null;\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 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 if (index >= 0 && index < ticks.length) {\n var tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\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 var labelSizes = this._getLabelSizes();\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 if (display !== 'auto') {\n return !!display;\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 var alignBorderValue = function alignBorderValue(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n var borderValue, i, lineValue, alignedLineValue;\n var tx1, ty1, tx2, ty2, x1, y1, x2, y2;\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 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 positionAxisID1 = Object.keys(position)[0];\n var value1 = position[positionAxisID1];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID1].getPixelForValue(value1));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n var limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n var step = Math.max(1, Math.ceil(ticksLength / limit));\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 if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\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 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 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 textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n var ret1 = this._getYAxisLabelAlignment(tl);\n textAlign = ret1.textAlign;\n x = ret1.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 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 positionAxisID1 = Object.keys(position)[0];\n var value1 = position[positionAxisID1];\n x = this.chart.scales[positionAxisID1].getPixelForValue(value1);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n var labelSizes = this._getLabelSizes();\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 if (isHorizontal) {\n x = pixel;\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 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 if (mirror) {\n textOffset *= -1;\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 var backdrop = void 0;\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 switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\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 items.push({\n rotation: rotation,\n label: label,\n font: font,\n color: color,\n strokeColor: strokeColor,\n strokeWidth: strokeWidth,\n textOffset: textOffset,\n textAlign: tickTextAlign,\n textBaseline: textBaseline,\n translation: [x, y],\n backdrop: backdrop\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 if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n var align = 'center';\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 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 var labelSizes = this._getLabelSizes();\n var tickAndPadding = tl + padding;\n var widest = labelSizes.widest.width;\n var textAlign;\n var x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\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 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 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 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 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 var chart = this.chart;\n var position = this.options.position;\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 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 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 if (!this._isVisible() || !grid.display) {\n return 0;\n }\n var ticks = this.ticks;\n var index = ticks.findIndex(function (t) {\n return t.value === value;\n });\n if (index >= 0) {\n var opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\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 var items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n var i, ilen;\n var drawLine = function drawLine(p1, p2, style) {\n if (!style.width || !style.color) {\n return;\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 if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n var item = items[i];\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 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 if (!axisWidth) {\n return;\n }\n var lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n var borderValue = this._borderValue;\n var x1, x2, y1, y2;\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 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 if (!optionTicks.display) {\n return;\n }\n var ctx = this.ctx;\n var area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n var items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n var i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n var item = items[i];\n var tickFont = item.font;\n var label = item.label;\n var y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\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 if (!title.display) {\n return;\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 if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\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 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 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 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 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 return [{\n z: gz,\n draw: function draw(chartArea) {\n _this10.drawBackground();\n _this10.drawGrid(chartArea);\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 for (i = 0, ilen = metas.length; i < ilen; ++i) {\n var meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\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 return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n }]);\n return Scale;\n}(Element);\nvar TypedRegistry = /*#__PURE__*/function () {\n function TypedRegistry(type, scope, override) {\n _classCallCheck(this, TypedRegistry);\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\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 if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n var items = this.items;\n var id = item.id;\n var scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\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 if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n }]);\n return TypedRegistry;\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 if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\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}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\nvar Registry = /*#__PURE__*/function () {\n function Registry() {\n _classCallCheck(this, Registry);\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 _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 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 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 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 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 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 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 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 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 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 this._each('unregister', args, this.scales);\n }\n }, {\n key: \"_each\",\n value: function _each(method, args, typedRegistry) {\n var _this11 = this;\n _toConsumableArray(args).forEach(function (arg) {\n var reg = typedRegistry || _this11._getRegistryForType(arg);\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 _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 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 if (reg.isForType(type)) {\n return reg;\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 if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n }]);\n return Registry;\n}();\nvar registry = /* #__PURE__ */new Registry();\nvar PluginService = /*#__PURE__*/function () {\n function PluginService() {\n _classCallCheck(this, PluginService);\n this._init = [];\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 this._notify(this._init, chart, 'install');\n }\n var descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n var result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n }, {\n key: \"_notify\",\n value: function _notify(descriptors, chart, hook, args) {\n args = args || {};\n var _iterator11 = _createForOfIteratorHelper(descriptors),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var descriptor = _step11.value;\n var plugin = descriptor.plugin;\n var method = plugin[hook];\n var params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\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 var descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\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 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 this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n }]);\n return PluginService;\n}();\nfunction allPlugins(config) {\n var localIds = {};\n var plugins = [];\n var keys = Object.keys(registry.plugins.items);\n for (var i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n var local = config.plugins || [];\n for (var i1 = 0; i1 < local.length; i1++) {\n var plugin = local[i1];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins: plugins,\n localIds: localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\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 var _iterator12 = _createForOfIteratorHelper(plugins),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var plugin = _step12.value;\n var id = plugin.id;\n var opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\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 _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n return result;\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 if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\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}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n var axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n id = scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.length > 1 && determineAxis(id[0].toLowerCase(), scaleOptions);\n if (id) {\n return id;\n }\n throw new Error(\"Cannot determine type of '\".concat(name, \"' axis. Please provide 'axis' or 'position' option.\"));\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 if (!isObject(scaleConf)) {\n return console.error(\"Invalid scale configuration for scale: \".concat(id));\n }\n if (scaleConf._proxy) {\n return console.warn(\"Ignoring resolver passed as options for scale: \".concat(id));\n }\n var axis = determineAxis(id, scaleConf);\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}\nfunction initOptions(config) {\n var options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nvar keyCache = new Map();\nvar keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n var keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nvar addIfFound = function addIfFound(set, obj, key) {\n var opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nvar Config = /*#__PURE__*/function () {\n function Config(config) {\n _classCallCheck(this, Config);\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\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 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 var cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\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 var cache = this._cachedScopes(mainScope, resetCache);\n var cached = cache.get(keyLists);\n if (cached) {\n return cached;\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 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 if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\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 var _getResolver = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver.resolver,\n subPrefixes = _getResolver.subPrefixes;\n var options = resolver;\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 var _iterator13 = _createForOfIteratorHelper(names),\n _step13;\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var prop = _step13.value;\n result[prop] = options[prop];\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\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 var _getResolver2 = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver2.resolver;\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n }]);\n return Config;\n}();\nfunction getResolver(resolverCache, scopes, prefixes) {\n var cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n var cacheKey = prefixes.join();\n var cached = cache.get(cacheKey);\n if (!cached) {\n var resolver = _createResolver(scopes, prefixes);\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 return cached;\n}\nvar hasFunction = function hasFunction(value) {\n return isObject(value) && Object.getOwnPropertyNames(value).reduce(function (acc, key) {\n return acc || isFunction(value[key]);\n }, false);\n};\nfunction needContext(proxy, names) {\n var _descriptors2 = _descriptors(proxy),\n isScriptable = _descriptors2.isScriptable,\n isIndexable = _descriptors2.isIndexable;\n var _iterator14 = _createForOfIteratorHelper(names),\n _step14;\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var prop = _step14.value;\n var scriptable = isScriptable(prop);\n var indexable = isIndexable(prop);\n var value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n return false;\n}\nvar version = \"4.0.1\";\nvar KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\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}\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}\nfunction onAnimationProgress(context) {\n var chart = context.chart;\n var animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\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 if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nvar instances = {};\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};\nfunction moveNumericKeys(obj, start, move) {\n var keys = Object.keys(obj);\n for (var _i2 = 0, _keys = keys; _i2 < _keys.length; _i2++) {\n var key = _keys[_i2];\n var intKey = +key;\n if (intKey >= start) {\n var value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getDatasetArea(meta) {\n var xScale = meta.xScale,\n yScale = meta.yScale;\n if (xScale && yScale) {\n return {\n left: xScale.left,\n right: xScale.right,\n top: yScale.top,\n bottom: yScale.bottom\n };\n }\n}\nvar Chart = /*#__PURE__*/function () {\n function Chart(item, userConfig) {\n var _this12 = this;\n _classCallCheck(this, Chart);\n var config = this.config = new Config(userConfig);\n var initialCanvas = getCanvas(item);\n var existingChart = getChart(initialCanvas);\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 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 if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\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 if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\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 if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\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 if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [this, newSize], this);\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 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 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 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 if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n var scale = null;\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 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 if (numMeta > numData) {\n for (var i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\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 var metasets = this._metasets,\n datasets = this.data.datasets;\n if (metasets.length > datasets.length) {\n delete this._stacks;\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 this._removeUnreferencedMetasets();\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 if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\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 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 this._updateMetasets();\n return newControllers;\n }\n }, {\n key: \"_resetElements\",\n value: function _resetElements() {\n var _this15 = this;\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 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 this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode: mode,\n cancelable: true\n }) === false) {\n return;\n }\n var newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n var minPadding = 0;\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 var reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, function (controller) {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode: mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n var _active = this._active,\n _lastEvent = this._lastEvent;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n }, {\n key: \"_updateScales\",\n value: function _updateScales() {\n var _this16 = this;\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 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 var _iterator15 = _createForOfIteratorHelper(changes),\n _step15;\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var _ref8 = _step15.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 _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n }\n }, {\n key: \"_getUniformDataChanges\",\n value: function _getUniformDataChanges() {\n var _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n var datasetCount = this.data.datasets.length;\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 var changeSet = makeSet(0);\n for (var i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\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 if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\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 if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n (_this17$_layers = _this17._layers).push.apply(_this17$_layers, _toConsumableArray(box._layers()));\n }, this);\n this._layers.forEach(function (item, index) {\n item._idx = index;\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 for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (var i1 = 0, ilen1 = this.data.datasets.length; i1 < ilen1; ++i1) {\n this._updateDataset(i1, isFunction(mode) ? mode({\n datasetIndex: i1\n }) : mode);\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 if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\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 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 if (this._resizeBeforeDraw) {\n var _this$_resizeBeforeDr = this._resizeBeforeDraw,\n width = _this$_resizeBeforeDr.width,\n height = _this$_resizeBeforeDr.height;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n var layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\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 for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n var meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\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 var metasets = this.getSortedVisibleDatasetMetas();\n for (var i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\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 if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\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 meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\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 if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\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 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 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 if (!dataset) {\n return false;\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 var anims = meta.controller._resolveAnimations(undefined, mode);\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 if (meta && meta.controller) {\n meta.controller._destroy();\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 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 this._stop();\n this.config.clearCache();\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 delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n }, {\n key: \"toBase64Image\",\n value: function toBase64Image() {\n var _this$canvas;\n return (_this$canvas = this.canvas).toDataURL.apply(_this$canvas, arguments);\n }\n }, {\n key: \"bindEvents\",\n value: function bindEvents() {\n this.bindUserEvents();\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 var listeners = this._listeners;\n var platform = this.platform;\n var _add = function _add(type, listener) {\n platform.addEventListener(_this18, type, listener);\n listeners[type] = listener;\n };\n var listener = function listener(e, x, y) {\n e.offsetX = x;\n e.offsetY = y;\n _this18._eventHandler(e);\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 if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n var listeners = this._responsiveListeners;\n var platform = this.platform;\n var _add = function _add(type, listener) {\n platform.addEventListener(_this19, type, listener);\n listeners[type] = listener;\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 var listener = function listener(width, height) {\n if (_this19.canvas) {\n _this19.resize(width, height);\n }\n };\n var detached;\n var attached = function attached() {\n _remove('attach', attached);\n _this19.attached = true;\n _this19.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = function detached() {\n _this19.attached = false;\n _remove('resize', listener);\n _this19._stop();\n _this19._resize(0, 0);\n _add('attach', attached);\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 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 if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\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 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 var lastActive = this._active || [];\n var active = activeElements.map(function (_ref9) {\n var datasetIndex = _ref9.datasetIndex,\n index = _ref9.index;\n var meta = _this21.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex: datasetIndex,\n element: meta.data[index],\n index: index\n };\n });\n var changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\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 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 var deactivated = diff(lastActive, active);\n var activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\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 var args = {\n event: e,\n replay: replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n var eventFilter = function eventFilter(plugin) {\n return (plugin.options.events || _this22.options.events).includes(e[\"native\"].type);\n };\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n var changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\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 var active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n var isClick = _isClickEvent(e);\n var lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n var changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\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 if (!inChartArea) {\n return lastActive;\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 return Chart;\n}();\nChart.defaults = defaults;\nChart.instances = instances;\nChart.overrides = overrides;\nChart.registry = registry;\nChart.version = version;\nChart.getChart = getChart;\nfunction invalidatePlugins() {\n return each(Chart.instances, function (chart) {\n return chart._plugins.invalidate();\n });\n}\nvar Chart$1 = Chart;\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;\n // 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 ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\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 ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n/**\n * Parse border radius from the provided options\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);\n // 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 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 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 */\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 */\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 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 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 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 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 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);\n // The corner segment from point 2 to point 3\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 }\n // The line from point 3 to point 4\n var p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n var pCenter1 = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter1.x, pCenter1.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\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);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n var pCenter2 = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter2.x, pCenter2.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n var p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n var pCenter3 = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\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 ctx.closePath();\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 if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (var i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\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 var inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\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 var endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (var i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nvar ArcElement = /*#__PURE__*/function (_Element2) {\n _inherits(ArcElement, _Element2);\n var _super12 = _createSuper(ArcElement);\n function ArcElement(cfg) {\n var _this23;\n _classCallCheck(this, ArcElement);\n _this23 = _super12.call(this);\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 if (cfg) {\n Object.assign(_assertThisInitialized(_this23), cfg);\n }\n return _this23;\n }\n _createClass(ArcElement, [{\n key: \"inRange\",\n value: function inRange(chartX, chartY, useFinalPosition) {\n var point = this.getProps(['x', 'y'], useFinalPosition);\n var _getAngleFromPoint2 = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n }),\n angle = _getAngleFromPoint2.angle,\n distance = _getAngleFromPoint2.distance;\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 var rAdjust = this.options.spacing / 2;\n var _circumference = valueOrDefault(circumference, endAngle - startAngle);\n var betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n var withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\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', 'circumference'], 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 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 if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\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 return ArcElement;\n}(Element);\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\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};\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}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\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}\nfunction pathSegment(ctx, line, segment, params) {\n var points = line.points,\n options = line.options;\n var _pathVars = pathVars(points, segment, params),\n count = _pathVars.count,\n start = _pathVars.start,\n loop = _pathVars.loop,\n ilen = _pathVars.ilen;\n var lineMethod = getLineMethod(options);\n var _ref10 = params || {},\n _ref10$move = _ref10.move,\n move = _ref10$move === void 0 ? true : _ref10$move,\n reverse = _ref10.reverse;\n var i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\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 prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n var points = line.points;\n var _pathVars2 = pathVars(points, segment, params),\n count = _pathVars2.count,\n start = _pathVars2.start,\n ilen = _pathVars2.ilen;\n var _ref11 = params || {},\n _ref11$move = _ref11.move,\n move = _ref11$move === void 0 ? true : _ref11$move,\n reverse = _ref11.reverse;\n var avgX = 0;\n var countX = 0;\n var i, point, prevX, minY, maxY, lastY;\n var pointIndex = function pointIndex(index) {\n return (start + (reverse ? ilen - index : index)) % count;\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 if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n var x = point.x;\n var y = point.y;\n var truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\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 lastY = y;\n }\n drawX();\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}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n var path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n var segments = line.segments,\n options = line.options;\n var segmentMethod = _getSegmentMethod(line);\n var _iterator16 = _createForOfIteratorHelper(segments),\n _step16;\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var segment = _step16.value;\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start: start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n}\nvar usePath2D = typeof Path2D === 'function';\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}\nvar LineElement = /*#__PURE__*/function (_Element3) {\n _inherits(LineElement, _Element3);\n var _super13 = _createSuper(LineElement);\n function LineElement(cfg) {\n var _this24;\n _classCallCheck(this, LineElement);\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 if (cfg) {\n Object.assign(_assertThisInitialized(_this24), cfg);\n }\n return _this24;\n }\n _createClass(LineElement, [{\n key: \"updateControlPoints\",\n value: function updateControlPoints(chartArea, indexAxis) {\n var options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n var loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\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 var segments = _boundSegments(this, {\n property: property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n var result = [];\n var _interpolate = _getInterpolationMethod(options);\n var i, ilen;\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 if (p1 === p2) {\n result.push(p1);\n continue;\n }\n var t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n var interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\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 return segmentMethod(ctx, this, segment, params);\n }\n }, {\n key: \"path\",\n value: function path(ctx, start, count) {\n var segments = this.segments;\n var segmentMethod = _getSegmentMethod(this);\n var loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n var _iterator17 = _createForOfIteratorHelper(segments),\n _step17;\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var segment = _step17.value;\n loop &= segmentMethod(ctx, this, segment, {\n start: start,\n end: start + count - 1\n });\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\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 if (points.length && options.borderWidth) {\n ctx.save();\n _draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n }]);\n return LineElement;\n}(Element);\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};\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n var options = el.options;\n var _el$getProps = el.getProps([axis], useFinalPosition),\n value = _el$getProps[axis];\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nvar PointElement = /*#__PURE__*/function (_Element4) {\n _inherits(PointElement, _Element4);\n var _super14 = _createSuper(PointElement);\n /**\n * @type {any}\n */\n\n /**\n * @type {any}\n */\n\n function PointElement(cfg) {\n var _this25;\n _classCallCheck(this, PointElement);\n _this25 = _super14.call(this);\n _this25.options = undefined;\n _this25.parsed = undefined;\n _this25.skip = undefined;\n _this25.stop = undefined;\n if (cfg) {\n Object.assign(_assertThisInitialized(_this25), cfg);\n }\n return _this25;\n }\n _createClass(PointElement, [{\n key: \"inRange\",\n value: function inRange(mouseX, mouseY, useFinalPosition) {\n var options = this.options;\n var _this$getProps4 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps4.x,\n y = _this$getProps4.y;\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 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 if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\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 || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n }]);\n return PointElement;\n}(Element);\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};\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 var left, right, top, bottom, half;\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 return {\n left: left,\n top: top,\n right: right,\n bottom: bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\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}\nfunction parseBorderRadius(bar, maxW, maxH) {\n var _bar$getProps2 = bar.getProps(['enableBorderRadius']),\n enableBorderRadius = _bar$getProps2.enableBorderRadius;\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}\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}\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}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\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}\nvar BarElement = /*#__PURE__*/function (_Element5) {\n _inherits(BarElement, _Element5);\n var _super15 = _createSuper(BarElement);\n function BarElement(cfg) {\n var _this26;\n _classCallCheck(this, BarElement);\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 if (cfg) {\n Object.assign(_assertThisInitialized(_this26), cfg);\n }\n return _this26;\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 var _boundingRects = boundingRects(this),\n inner = _boundingRects.inner,\n outer = _boundingRects.outer;\n var addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\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 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 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 return BarElement;\n}(Element);\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 LineElement: LineElement,\n PointElement: PointElement,\n BarElement: BarElement\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];\n// Border colors with 50% transparency\nvar BACKGROUND_COLORS = /* #__PURE__ */BORDER_COLORS.map(function (color) {\n return color.replace('rgb(', 'rgba(').replace(')', ', 0.5)');\n});\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction createDefaultDatasetColorizer() {\n return function (dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n };\n}\nfunction createDoughnutDatasetColorizer() {\n var i = 0;\n return function (dataset) {\n dataset.backgroundColor = dataset.data.map(function () {\n return getBorderColor(i++);\n });\n };\n}\nfunction createPolarAreaDatasetColorizer() {\n var i = 0;\n return function (dataset) {\n dataset.backgroundColor = dataset.data.map(function () {\n return getBackgroundColor(i++);\n });\n };\n}\nfunction getColorizer(type) {\n if (type === 'doughnut' || type === 'pie') {\n return createDoughnutDatasetColorizer();\n } else if (type === 'polarArea') {\n return createPolarAreaDatasetColorizer();\n }\n return createDefaultDatasetColorizer();\n}\nfunction containsColorsDefinitions(descriptors) {\n var k;\n for (k in descriptors) {\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true\n },\n beforeLayout: function beforeLayout(chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n var _chart$config = chart.config,\n type = _chart$config.type,\n elements = _chart$config.options.elements,\n datasets = _chart$config.data.datasets;\n if (containsColorsDefinitions(datasets) || elements && containsColorsDefinitions(elements)) {\n return;\n }\n var colorizer = getColorizer(type);\n datasets.forEach(colorizer);\n }\n};\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n var samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\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 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 for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\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 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 if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\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 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 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 avgX = (countX * avgX + point.x) / ++countX;\n } else {\n var lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n var intermediateIndex1 = Math.min(minIndex, maxIndex);\n var intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex1]), {}, {\n x: avgX\n }));\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex2]), {}, {\n x: avgX\n }));\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\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 value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach(function (dataset) {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n var pointCount = points.length;\n var start = 0;\n var count;\n var iScale = meta.iScale;\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 if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\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 return {\n start: start,\n count: count\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 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 if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n var xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n var _getStartAndCountOfVi3 = getStartAndCountOfVisiblePointsSimplified(meta, data),\n start = _getStartAndCountOfVi3.start,\n count = _getStartAndCountOfVi3.count;\n var threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\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 var decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(\"Unsupported decimation algorithm '\".concat(options.algorithm, \"'\"));\n }\n dataset._decimated = decimated;\n });\n },\n destroy: function destroy(chart) {\n cleanDecimatedData(chart);\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 var _iterator18 = _createForOfIteratorHelper(segments),\n _step18;\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var segment = _step18.value;\n var start = segment.start,\n end = segment.end;\n end = _findSegmentEnd(start, end, points);\n var bounds = _getBounds(property, points[start], points[end], segment.loop);\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 var targetSegments = _boundSegments(target, bounds);\n var _iterator19 = _createForOfIteratorHelper(targetSegments),\n _step19;\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var tgt = _step19.value;\n var subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n var fillSources = _boundSegment(segment, points, subBounds);\n var _iterator20 = _createForOfIteratorHelper(fillSources),\n _step20;\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var fillSource = _step20.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 _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 } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n var start = first[property];\n var end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property: property,\n start: start,\n end: end\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 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 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}\nfunction _findSegmentEnd(start, end, points) {\n for (; end > start; end--) {\n var point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _createBoundaryLine(boundary, line) {\n var points = [];\n var _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\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}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\nfunction _resolveTarget(sources, index, propagate) {\n var source = sources[index];\n var fill = source.fill;\n var visited = [index];\n var target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n var fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n var target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n var pixel = null;\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 return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n var value;\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 return value;\n}\nfunction parseFillOption(line) {\n var options = line.options;\n var fillOption = options.fill;\n var fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\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 for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n for (var j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points: points,\n options: {}\n });\n}\nfunction getLinesBelow(scale, index) {\n var below = [];\n var metas = scale.getMatchingVisibleMetas('line');\n for (var i = 0; i < metas.length; i++) {\n var meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n var postponed = [];\n for (var j = 0; j < linesBelow.length; j++) {\n var line = linesBelow[j];\n var _findPoint = findPoint(line, sourcePoint, 'x'),\n first = _findPoint.first,\n last = _findPoint.last,\n point = _findPoint.point;\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push.apply(points, postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n var point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\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 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 if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first: first,\n last: last,\n point: point\n };\n}\nvar simpleArc = /*#__PURE__*/function () {\n function simpleArc(opts) {\n _classCallCheck(this, simpleArc);\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\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 return simpleArc;\n}();\nfunction _getTarget(source) {\n var chart = source.chart,\n fill = source.fill,\n line = source.line;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n var boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\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}\nfunction computeBoundary(source) {\n var scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n var _source$scale = source.scale,\n scale = _source$scale === void 0 ? {} : _source$scale,\n fill = source.fill;\n var pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n var horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\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 var value = _getTargetValue(fill, scale, start);\n var target = [];\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 for (var i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction _drawfill(ctx, source, area) {\n var target = _getTarget(source);\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 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 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}\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 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 fill(ctx, {\n line: line,\n target: target,\n color: below,\n scale: scale,\n property: property\n });\n ctx.restore();\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 var _iterator21 = _createForOfIteratorHelper(segments),\n _step21;\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var segment = _step21.value;\n var start = segment.start,\n end = segment.end;\n var firstPoint = points[start];\n var lastPoint = points[_findSegmentEnd(start, end, points)];\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 lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\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 var segments = _segments(line, target, property);\n var _iterator22 = _createForOfIteratorHelper(segments),\n _step22;\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var _ref16 = _step22.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 if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n var targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\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 var _ref17 = bounds || {},\n property = _ref17.property,\n start = _ref17.start,\n end = _ref17.end;\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n var interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\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 for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\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 meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\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 for (var i = metasets.length - 1; i >= 0; --i) {\n var source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\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 var metasets = chart.getSortedVisibleDatasetMetas();\n for (var i = metasets.length - 1; i >= 0; --i) {\n var source = metasets[i].$filler;\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 if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\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 if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth: boxWidth,\n boxHeight: boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nvar itemsEqual = function itemsEqual(a, b) {\n return a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n};\nvar Legend = /*#__PURE__*/function (_Element6) {\n _inherits(Legend, _Element6);\n var _super16 = _createSuper(Legend);\n function Legend(config) {\n var _this27;\n _classCallCheck(this, Legend);\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 _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 var labelOpts = this.options.labels || {};\n var legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter(function (item) {\n return labelOpts.filter(item, _this28.chart.data);\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 if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n }, {\n key: \"fit\",\n value: function fit() {\n var options = this.options,\n ctx = this.ctx;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n var labelOpts = options.labels;\n var labelFont = toFont(labelOpts.font);\n var fontSize = labelFont.size;\n var titleHeight = this._computeTitleHeight();\n var _getBoxSize = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize.boxWidth,\n itemHeight = _getBoxSize.itemHeight;\n var width, height;\n ctx.font = labelFont.string;\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 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 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 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 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 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 var titleHeight = this._computeTitleHeight();\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 if (this.isHorizontal()) {\n var row = 0;\n var left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n var _iterator23 = _createForOfIteratorHelper(hitboxes),\n _step23;\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n var hitbox = _step23.value;\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\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 _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n } else {\n var col = 0;\n var top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n var _iterator24 = _createForOfIteratorHelper(hitboxes),\n _step24;\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n var hitbox1 = _step24.value;\n if (hitbox1.col !== col) {\n col = hitbox1.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox1.top = top;\n hitbox1.left += this.left + padding;\n hitbox1.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox1.left), hitbox1.width);\n top += hitbox1.height + padding;\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.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 this._draw();\n unclipArea(ctx);\n }\n }\n }, {\n key: \"_draw\",\n value: function _draw() {\n var _this29 = this;\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 var _getBoxSize2 = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize2.boxWidth,\n boxHeight = _getBoxSize2.boxHeight,\n itemHeight = _getBoxSize2.itemHeight;\n var drawLegendBox = function drawLegendBox(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\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 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 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 ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\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 var isHorizontal = this.isHorizontal();\n var titleHeight = this._computeTitleHeight();\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 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 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 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 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);\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 if (!titleOpts.display) {\n return;\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 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 var x = _alignStartEnd(position, left, left + maxWidth);\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 if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\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 return null;\n }\n }, {\n key: \"handleEvent\",\n value: function handleEvent(e) {\n var opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n var hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n var previous = this._hoveredItem;\n var sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\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 return Legend;\n}(Element);\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}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n var legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce(function (a, b) {\n return a.length > b.length ? a : b;\n });\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n var itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n var labelHeight = legendItem.text ? legendItem.text.length + 0.5 : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\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 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};\nvar Title = /*#__PURE__*/function (_Element7) {\n _inherits(Title, _Element7);\n var _super17 = _createSuper(Title);\n function Title(config) {\n var _this30;\n _classCallCheck(this, Title);\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 _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 if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\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 var textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\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 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 maxWidth = bottom - top;\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 if (!opts.display) {\n return;\n }\n var fontOpts = toFont(opts.font);\n var lineHeight = fontOpts.lineHeight;\n var offset = lineHeight / 2 + this._padding.top;\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 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 return Title;\n}(Element);\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}\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 var i, len;\n var x = 0;\n var y = 0;\n var count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n var el = items[i].element;\n if (el && el.hasValue()) {\n var pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest: function nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n var x = eventPosition.x;\n var y = eventPosition.y;\n var minDistance = Number.POSITIVE_INFINITY;\n var i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n var el = items[i].element;\n if (el && el.hasValue()) {\n var center = el.getCenterPoint();\n var d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n var tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x: x,\n y: y\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 return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\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 var _controller$getLabelA = controller.getLabelAndValue(index),\n label = _controller$getLabelA.label,\n value = _controller$getLabelA.value;\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}\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 if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\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 if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n var widthPadding = 0;\n var maxLineWidth = function maxLineWidth(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\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}\nfunction determineYAlign(chart, size) {\n var y = size.y,\n height = size.height;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n var x = size.x,\n width = size.width;\n var caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\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 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 if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\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}\nfunction alignX(size, xAlign) {\n var x = size.x,\n width = size.width;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n var y = size.y,\n height = size.height;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\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 var _toTRBLCorners = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners.topLeft,\n topRight = _toTRBLCorners.topRight,\n bottomLeft = _toTRBLCorners.bottomLeft,\n bottomRight = _toTRBLCorners.bottomRight;\n var x = alignX(size, xAlign);\n var y = alignY(size, yAlign, paddingAndSize);\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 return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\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}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip: tooltip,\n tooltipItems: tooltipItems,\n type: 'tooltip'\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}\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 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 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 var label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n var value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\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};\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n var result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nvar Tooltip = /*#__PURE__*/function (_Element8) {\n _inherits(Tooltip, _Element8);\n var _super18 = _createSuper(Tooltip);\n function Tooltip(config) {\n var _this31;\n _classCallCheck(this, Tooltip);\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 _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 if (cached) {\n return cached;\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 if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\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 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 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 for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter(function (element, index, array) {\n return options.filter(element, index, array, data);\n });\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort(function (a, b) {\n return options.itemSort(a, b, data);\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 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 this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\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 var _toTRBLCorners2 = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners2.topLeft,\n topRight = _toTRBLCorners2.topRight,\n bottomLeft = _toTRBLCorners2.bottomLeft,\n bottomRight = _toTRBLCorners2.bottomRight;\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 if (yAlign === 'center') {\n y2 = ptY + height / 2;\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 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 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 y3 = y1;\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 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 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 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 labelColors = this.labelColors[i];\n var labelPointStyle = this.labelPointStyles[i];\n var boxHeight = options.boxHeight,\n boxWidth = options.boxWidth,\n boxPadding = options.boxPadding;\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 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 = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max.apply(Math, _toConsumableArray(Object.values(labelColors.borderWidth))) : labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n var outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n var innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n var borderRadius = toTRBLCorners(labelColors.borderRadius);\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 = labelColors.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 = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\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 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 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 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 if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\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 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 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 var _toTRBLCorners3 = toTRBLCorners(options.cornerRadius),\n topLeft = _toTRBLCorners3.topLeft,\n topRight = _toTRBLCorners3.topRight,\n bottomLeft = _toTRBLCorners3.bottomLeft,\n bottomRight = _toTRBLCorners3.bottomRight;\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 if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\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 if (animX || animY) {\n var position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\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 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 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 if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\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 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 var lastActive = this._active;\n var active = activeElements.map(function (_ref18) {\n var datasetIndex = _ref18.datasetIndex,\n index = _ref18.index;\n var meta = _this34.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex: datasetIndex,\n element: meta.data[index],\n index: index\n };\n });\n var changed = !_elementsEqual(lastActive, active);\n var positionChanged = this._positionChanged(active, eventPosition);\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 if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n var options = this.options;\n var lastActive = this._active || [];\n var active = this._getActiveElements(e, lastActive, replay, inChartArea);\n var positionChanged = this._positionChanged(active, e);\n var changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\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 return changed;\n }\n }, {\n key: \"_getActiveElements\",\n value: function _getActiveElements(e, lastActive, replay, inChartArea) {\n var options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n var active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\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 return Tooltip;\n}(Element);\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 if (tooltip && tooltip._willRender()) {\n var args = {\n tooltip: tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', _objectSpread(_objectSpread({}, args), {}, {\n cancelable: true\n })) === false) {\n return;\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 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});\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 return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n var first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n var last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nvar validIndex = function validIndex(index, max) {\n return index === null ? null : _limitValue(Math.round(index), 0, max);\n};\nfunction _getLabelForValue(value) {\n var labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nvar CategoryScale = /*#__PURE__*/function (_Scale) {\n _inherits(CategoryScale, _Scale);\n var _super19 = _createSuper(CategoryScale);\n function CategoryScale(cfg) {\n var _this35;\n _classCallCheck(this, CategoryScale);\n _this35 = _super19.call(this, cfg);\n _this35._startValue = undefined;\n _this35._valueRange = 0;\n _this35._addedLabels = [];\n return _this35;\n }\n _createClass(CategoryScale, [{\n key: \"init\",\n value: function init(scaleOptions) {\n var added = this._addedLabels;\n if (added.length) {\n var labels = this.getLabels();\n var _iterator25 = _createForOfIteratorHelper(added),\n _step25;\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var _ref20 = _step25.value;\n var _index3 = _ref20.index;\n var label = _ref20.label;\n if (labels[_index3] === label) {\n labels.splice(_index3, 1);\n }\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n this._addedLabels = [];\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 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 var _this$getMinMax = this.getMinMax(true),\n min = _this$getMinMax.min,\n max = _this$getMinMax.max;\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\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 for (var value = min; value <= max; value++) {\n ticks.push({\n value: value\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 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 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 if (index < 0 || index > ticks.length - 1) {\n return null;\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 return CategoryScale;\n}(Scale);\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: _getLabelForValue\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 if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{\n value: rmin\n }, {\n value: rmax\n }];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\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 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 if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\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 if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\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 for (; j < numSpaces; ++j) {\n ticks.push({\n value: Math.round((niceMin + j * spacing) * factor) / factor\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 return ticks;\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}\nvar LinearScaleBase = /*#__PURE__*/function (_Scale2) {\n _inherits(LinearScaleBase, _Scale2);\n var _super20 = _createSuper(LinearScaleBase);\n function LinearScaleBase(cfg) {\n var _this36;\n _classCallCheck(this, LinearScaleBase);\n _this36 = _super20.call(this, cfg);\n _this36.start = undefined;\n _this36.end = undefined;\n _this36._startValue = undefined;\n _this36._endValue = undefined;\n _this36._valueRange = 0;\n return _this36;\n }\n _createClass(LinearScaleBase, [{\n key: \"parse\",\n value: function parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n }, {\n key: \"handleTickRangeOptions\",\n value: function handleTickRangeOptions() {\n var beginAtZero = this.options.beginAtZero;\n var _this$getUserBounds3 = this.getUserBounds(),\n minDefined = _this$getUserBounds3.minDefined,\n maxDefined = _this$getUserBounds3.maxDefined;\n var min = this.min,\n max = this.max;\n var setMin = function setMin(v) {\n return min = minDefined ? min : v;\n };\n var setMax = function setMax(v) {\n return max = maxDefined ? max : v;\n };\n if (beginAtZero) {\n var minSign = sign(min);\n var maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n var offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\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 if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\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 if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\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 if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\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 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 _get(_getPrototypeOf(LinearScaleBase.prototype), \"configure\", this).call(this);\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 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 return LinearScaleBase;\n}(Scale);\nvar LinearScale = /*#__PURE__*/function (_LinearScaleBase) {\n _inherits(LinearScale, _LinearScaleBase);\n var _super21 = _createSuper(LinearScale);\n function LinearScale() {\n _classCallCheck(this, LinearScale);\n return _super21.apply(this, arguments);\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 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 var tickFont = this._resolveTickFontOptions(0);\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 return LinearScale;\n}(LinearScaleBase);\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\nvar log10Floor = function log10Floor(v) {\n return Math.floor(log10(v));\n};\nvar changeExponent = function changeExponent(v, m) {\n return Math.pow(10, log10Floor(v) + m);\n};\nfunction isMajor(tickVal) {\n var remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\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}\nfunction startExp(min, max) {\n var range = max - min;\n var rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\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 while (value < max) {\n ticks.push({\n value: value,\n major: isMajor(value),\n significand: significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\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}\nvar LogarithmicScale = /*#__PURE__*/function (_Scale3) {\n _inherits(LogarithmicScale, _Scale3);\n var _super22 = _createSuper(LogarithmicScale);\n function LogarithmicScale(cfg) {\n var _this37;\n _classCallCheck(this, LogarithmicScale);\n _this37 = _super22.call(this, cfg);\n _this37.start = undefined;\n _this37.end = undefined;\n _this37._startValue = undefined;\n _this37._valueRange = 0;\n return _this37;\n }\n _createClass(LogarithmicScale, [{\n key: \"parse\",\n value: function parse(raw, index) {\n var value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\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 this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\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 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 var min = this.min;\n var max = this.max;\n var setMin = function setMin(v) {\n return min = minDefined ? min : v;\n };\n var setMax = function setMax(v) {\n return max = maxDefined ? max : v;\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 if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\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 if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\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 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 _get(_getPrototypeOf(LogarithmicScale.prototype), \"configure\", this).call(this);\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 if (value === null || isNaN(value)) {\n return NaN;\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 return LogarithmicScale;\n}(Scale);\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\nfunction getTickBackdropHeight(opts) {\n var tickOpts = opts.ticks;\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 return 0;\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}\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 return {\n start: pos,\n end: pos + size\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 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 var angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\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 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}\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 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 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}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n var items = [];\n var valueCount = scale._pointLabels.length;\n var opts = scale.options;\n var extra = getTickBackdropHeight(opts) / 2;\n var outerDistance = scale.drawingArea;\n var additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (var i = 0; i < valueCount; i++) {\n var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n var angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n var size = labelSizes[i];\n var y = yForAngle(pointLabelPosition.y, size.h, angle);\n var textAlign = getTextAlignForAngle(angle);\n var left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\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 return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\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 return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n var ctx = scale.ctx,\n pointLabels = scale.options.pointLabels;\n for (var i = labelCount - 1; i >= 0; i--) {\n var optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n var plFont = toFont(optsAtIndex.font);\n var _scale$_pointLabelIte = scale._pointLabelItems[i],\n x = _scale$_pointLabelIte.x,\n y = _scale$_pointLabelIte.y,\n textAlign = _scale$_pointLabelIte.textAlign,\n left = _scale$_pointLabelIte.left,\n top = _scale$_pointLabelIte.top,\n right = _scale$_pointLabelIte.right,\n bottom = _scale$_pointLabelIte.bottom;\n var _optsAtIndex = optsAtIndex,\n backdropColor = _optsAtIndex.backdropColor;\n if (!isNullOrUndef(backdropColor)) {\n var borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n var padding = toPadding(optsAtIndex.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 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 renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n var ctx = scale.ctx;\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 for (var i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\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 if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\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}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label: label,\n index: index,\n type: 'pointLabel'\n });\n}\nvar RadialLinearScale = /*#__PURE__*/function (_LinearScaleBase2) {\n _inherits(RadialLinearScale, _LinearScaleBase2);\n var _super23 = _createSuper(RadialLinearScale);\n function RadialLinearScale(cfg) {\n var _this38;\n _classCallCheck(this, RadialLinearScale);\n _this38 = _super23.call(this, cfg);\n _this38.xCenter = undefined;\n _this38.yCenter = undefined;\n _this38.drawingArea = undefined;\n _this38._pointLabels = [];\n _this38._pointLabelItems = [];\n return _this38;\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 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 _this39 = this;\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map(function (value, index) {\n var label = callback(_this39.options.pointLabels.callback, [value, index], _this39);\n return label || label === 0 ? label : '';\n }).filter(function (v, i) {\n return _this39.chart.getDataVisibility(i);\n });\n }\n }, {\n key: \"fit\",\n value: function fit() {\n var opts = this.options;\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 var scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\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 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 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 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 _this40 = this;\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 if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach(function (tick, index) {\n if (index !== 0) {\n offset = _this40.getDistanceFromCenterForValue(tick.value);\n var context = _this40.getContext(index);\n var optsAtIndex = grid.setContext(context);\n var optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(_this40, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\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 if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n }, {\n key: \"drawBorder\",\n value: function drawBorder() {}\n }, {\n key: \"drawLabels\",\n value: function drawLabels() {\n var _this41 = this;\n var ctx = this.ctx;\n var opts = this.options;\n var tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\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 && !opts.reverse) {\n return;\n }\n var optsAtIndex = tickOpts.setContext(_this41.getContext(index));\n var tickFont = toFont(optsAtIndex.font);\n offset = _this41.getDistanceFromCenterForValue(_this41.ticks[index].value);\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 renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n }, {\n key: \"drawTitle\",\n value: function drawTitle() {}\n }]);\n return RadialLinearScale;\n}(LinearScaleBase);\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);\nfunction sorter(a, b) {\n return a - b;\n}\nfunction _parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\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 if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n var ilen = UNITS.length;\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 if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\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 if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\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}\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 var timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\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 for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n var ticks = [];\n var map = {};\n var ilen = values.length;\n var i, value;\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 return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nvar TimeScale = /*#__PURE__*/function (_Scale4) {\n _inherits(TimeScale, _Scale4);\n var _super24 = _createSuper(TimeScale);\n function TimeScale(props) {\n var _this42;\n _classCallCheck(this, TimeScale);\n _this42 = _super24.call(this, props);\n _this42._cache = {\n data: [],\n labels: [],\n all: []\n };\n _this42._unit = 'day';\n _this42._majorUnit = undefined;\n _this42._offsets = {};\n _this42._normalized = false;\n _this42._parseOpts = undefined;\n return _this42;\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 _get(_getPrototypeOf(TimeScale.prototype), \"init\", this).call(this, scaleOpts);\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 return _parse(this, raw);\n }\n }, {\n key: \"beforeLayout\",\n value: function beforeLayout() {\n _get(_getPrototypeOf(TimeScale.prototype), \"beforeLayout\", this).call(this);\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 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 function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\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 if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\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 if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n var min = this.min;\n var max = this.max;\n var ticks = _filterBetween(timestamps, min, max);\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 if (options.reverse) {\n ticks.reverse();\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 if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\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 if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\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 var timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(function (a, b) {\n return a - b;\n }).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 if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\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 if (formatter) {\n return callback(formatter, [time, index, ticks], this);\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 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 var tickFontSize = this._resolveTickFontOptions(0).size;\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 var exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n var size = this._getLabelSize(exampleLabel);\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 if (timestamps.length) {\n return timestamps;\n }\n var metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\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 if (timestamps.length) {\n return timestamps;\n }\n var labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(_parse(this, labels[i]));\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 return TimeScale;\n}(Scale);\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};\nfunction interpolate(table, val, reverse) {\n var lo = 0;\n var hi = table.length - 1;\n var prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n var _lookupByKey2 = _lookupByKey(table, 'pos', val);\n lo = _lookupByKey2.lo;\n hi = _lookupByKey2.hi;\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 lo = _lookupByKey3.lo;\n hi = _lookupByKey3.hi;\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 var span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nvar TimeSeriesScale = /*#__PURE__*/function (_TimeScale) {\n _inherits(TimeSeriesScale, _TimeScale);\n var _super25 = _createSuper(TimeSeriesScale);\n function TimeSeriesScale(props) {\n var _this43;\n _classCallCheck(this, TimeSeriesScale);\n _this43 = _super25.call(this, props);\n _this43._table = [];\n _this43._minPos = undefined;\n _this43._tableRange = undefined;\n return _this43;\n }\n _createClass(TimeSeriesScale, [{\n key: \"initOffsets\",\n value: function initOffsets() {\n var timestamps = this._getTimestampsForTable();\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 _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 for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\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 for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n }, {\n key: \"_getTimestampsForTable\",\n value: function _getTimestampsForTable() {\n var timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n var data = this.getDataTimestamps();\n var label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\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 return TimeSeriesScale;\n}(TimeScale);\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\nvar TimeSeriesScale$1 = TimeSeriesScale;\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$1\n});\nvar registerables = [controllers, elements, plugins, scales];\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart$1 as 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, TimeScale, TimeSeriesScale$1 as TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\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.\"); }\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); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\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; }\nimport { Chart, registerables } from '../dist/chart.js';\nChart.register.apply(Chart, _toConsumableArray(registerables));\nexport * from '../dist/chart.js';\nexport default Chart;","import Chart from 'chart.js/auto';\n\nexport function block_screen() {\n\t// Para evitar perdida de transparencia si se acumulan componentes .block-window\n\tunblock_screen();\n\t//$('body').append(\"
\");\n\t//$('body').append(\"
\");\n\t$('body').addClass(\"loading\");\n};\n\nexport function unblock_screen() {\n\t//$(\".block-window\").remove();\n\t$('body').removeClass(\"loading\");\n};\n\nexport function setIntervalTurbolinks(myFunction, millis) {\n\tvar myVar = setInterval(myFunction, millis);\n\n/*\t\n\t$(document).on('turbolinks:before-cache turbolinks:before-render', function() {\n\t clearTimeout(myVar);\n\t});\n*/\t\n\t$(window).on('beforeunload', function() {\n\t clearTimeout(myVar);\n\t});\n\n\treturn myVar;\n};\n\nexport function getIconByLeagueRule(league_rule_id) {\n\tif (league_rule_id == 8 || league_rule_id == 14) {\n\t\treturn 'fa fa-trophy ';\n\t}\n\tif (league_rule_id == 12) {\n\t\treturn 'fa fa-award ';\n\t}\n\tif (league_rule_id == 13) {\n\t\treturn 'fa fa-arrow-alt-circle-down ';\n\t}\n\tif (league_rule_id >= 4 && league_rule_id <= 7) {\n\t\treturn 'fa fa-hand-point-right ';\n\t}\n\tif (league_rule_id == 10) {\n\t\treturn 'fas fa-futbol ';\n\t}\n\treturn '';\n};\n\nexport function clearChart(canvasId) {\n\tlet previousChart = Chart.getChart(canvasId);\n\tif (previousChart != undefined) {\n\t\tpreviousChart.destroy();\n\t}\n};\n\nexport function createChart(canvasId, chartType, labels, datasets, options) {\n\tconst ctx = document.getElementById(canvasId);\n\tlet chart = new Chart(ctx, {\n\t\ttype: chartType,\n\t\tdata: {\n\t\t\tlabels: labels,\n\t\t\tdatasets: datasets\n\t },\n\t options: options\n\t});\n};\n\nexport function normalizeString(s) {\n\treturn s.toLowerCase().normalize('NFD').replace(/\\p{Diacritic}/gu, '').trim();\n}\n\nexport function getKey(entity, id) {\n\treturn entity + \"_\" + id;\n}\n\nexport function existsInLocal(key) {\n\n\tif(localStorage.getItem(key)) {\n\t\tvar serialized = loadJSONFromLocal(key);\n\t\tif(!serialized.timestamp || !serialized.ttl || (!serialized.data && serialized.data !== null ) || new Date() - new Date(serialized.timestamp) > serialized.ttl) {\n\t\t\tlocalStorage.removeItem('key');\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t\t\n\t} else {\n\t\treturn false;\n\t}\n}\n\nexport function loadJSONFromLocal(key) {\n return JSON.parse(localStorage.getItem(key));\n};\nexport function saveJSONToLocal(key, jsonObject, ttl) {\n\tvar serialized = {\n\t\tdata: jsonObject,\n\t\ttimestamp: new Date(),\n\t\tttl: ttl\n\t}\t\n localStorage.setItem(key, JSON.stringify(serialized));\n};\n\n// TODO Hacer esto mejor...\nexport function loadOptionsFromLocal() {\n\tvar key = \"options\";\n\tif(localStorage.getItem(key)) {\n\t return JSON.parse(localStorage.getItem(key));\n\t} else {\n\t\treturn {};\n\t}\n};\nexport function saveOptionsToLocal(serialized) {\n\tvar key = \"options\";\n localStorage.setItem(key, JSON.stringify(serialized));\n};\n\n/* Funciones para copiar al portapapeles */\nexport function copyToClipboard(textToCopy, onSuccess, onError) {\n\n\tif (!navigator.clipboard){\n\t\t// use old commandExec() way\n\t\tfunction listener(e) {\n\t\t\te.clipboardData.setData(\"text/html\", textToCopy);\n\t\t\te.clipboardData.setData(\"text/plain\", textToCopy);\n\t\t\te.preventDefault();\n\t\t}\n\t\tdocument.addEventListener(\"copy\", listener);\n\t\tif(document.execCommand(\"copy\")) {\n\t\t\tonSuccess();\n\t\t} else {\n\t\t\tonError();\n\t\t}\n\t\tdocument.removeEventListener(\"copy\", listener);\n\t} else{\n\t\t// use clipboard API\n\t\tnavigator.clipboard.writeText(textToCopy).then(\n\t\t\t() => {\n\t\t\t\tonSuccess();\n\t\t\t})\n\t\t .catch((error) => {\n\t\t\t\tcopyToClipboardSafari(textToCopy);\n\t\t\t\tonError();\n\t\t\t});\n\t}\n}\nfunction copyToClipboardSafari(message) {\n\tconst clipboardItem = new ClipboardItem({\n\t\t'text/plain': someAsyncMethod().then((result) => {\n\n\t\t\t/**\n\t\t\t * We have to return an empty string to the clipboard if something bad happens, otherwise the\n\t\t\t * return type for the ClipBoardItem is incorrect.\n\t\t\t */\n\t\t\tif (!result) {\n\t\t\t\treturn new Promise(async (resolve) => {\n\t\t\t\t\tresolve(new Blob[``]())\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn new Promise(async (resolve) => {\n\t\t\t\tresolve(new Blob([message]))\n\t\t\t});\n\t\t}),\n\t})\n\t// Now, we can write to the clipboard in Safari\n\tnavigator.clipboard.write([clipboardItem]);\n}\n\n\n"],"sourceRoot":""}