{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./app/webpacker/javascripts/components/common_elements.coffee","webpack:///./node_modules/@material/list/constants.js","webpack:///./node_modules/@material/base/foundation.js","webpack:///./node_modules/@material/base/component.js","webpack:///./app/webpacker/javascripts/components/forms.coffee","webpack:///./app/webpacker/javascripts/lib/interactions.coffee","webpack:///./node_modules/@material/dom/events.js","webpack:///./node_modules/@material/dom/ponyfill.js","webpack:///./app/webpacker/javascripts/lib/requests.coffee","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.mjs","webpack:///./node_modules/chart.js/dist/chart.mjs","webpack:///./app/webpacker/javascripts/lib/dom_search.coffee","webpack:///./node_modules/@material/snackbar/constants.js","webpack:///./node_modules/@material/snackbar/foundation.js","webpack:///./node_modules/@material/snackbar/util.js","webpack:///./node_modules/@material/snackbar/component.js","webpack:///./app/webpacker/javascripts/components/flash.coffee","webpack:///./app/webpacker/javascripts/lib/user.coffee","webpack:///./node_modules/@material/floating-label/constants.js","webpack:///./node_modules/@material/floating-label/foundation.js","webpack:///./node_modules/@material/floating-label/component.js","webpack:///./node_modules/@material/line-ripple/constants.js","webpack:///./node_modules/@material/line-ripple/foundation.js","webpack:///./node_modules/@material/line-ripple/component.js","webpack:///./node_modules/@material/notched-outline/constants.js","webpack:///./node_modules/@material/notched-outline/foundation.js","webpack:///./node_modules/@material/notched-outline/component.js","webpack:///./node_modules/@material/textfield/character-counter/constants.js","webpack:///./node_modules/@material/textfield/character-counter/foundation.js","webpack:///./node_modules/@material/textfield/character-counter/component.js","webpack:///./node_modules/@material/textfield/constants.js","webpack:///./node_modules/@material/textfield/foundation.js","webpack:///./node_modules/@material/textfield/helper-text/constants.js","webpack:///./node_modules/@material/textfield/helper-text/foundation.js","webpack:///./node_modules/@material/textfield/helper-text/component.js","webpack:///./node_modules/@material/textfield/component.js","webpack:///./node_modules/@material/checkbox/constants.js","webpack:///./node_modules/@material/checkbox/foundation.js","webpack:///./node_modules/@material/checkbox/component.js","webpack:///./app/webpacker/javascripts/components/dividend_series_graph.coffee","webpack:///./app/webpacker/javascripts/security.coffee","webpack:///./app/webpacker/javascripts/components/report_issue_form.coffee","webpack:///./app/webpacker/javascripts/components/common_components.coffee","webpack:///./app/webpacker/javascripts/components/loading.coffee","webpack:///./node_modules/@material/ripple/component.js","webpack:///./node_modules/@material/ripple/constants.js","webpack:///./node_modules/@material/ripple/foundation.js","webpack:///./app/webpacker/javascripts/components/material_elements.coffee","webpack:///./node_modules/tom-select/dist/js/tom-select.complete.js","webpack:///./node_modules/luxon/build/cjs-browser/luxon.js","webpack:///./app/webpacker/javascripts/components/tabs.coffee","webpack:///./app/webpacker/javascripts/components/date_picker.coffee","webpack:///./app/webpacker/javascripts/lib/character_encoder.coffee","webpack:///./app/webpacker/javascripts/components/popup.coffee","webpack:///./app/webpacker/javascripts/components/dividend_series_manager.coffee","webpack:///./app/webpacker/javascripts/analyst_flag_dialog.coffee","webpack:///./node_modules/@material/ripple/util.js","webpack:///./node_modules/@material/animation/util.js","webpack:///./app/webpacker/javascripts/publish_series.coffee","webpack:///./node_modules/@material/dom/keyboard.js","webpack:///./node_modules/@material/list/events.js","webpack:///./node_modules/@material/list/typeahead.js","webpack:///./node_modules/@material/list/foundation.js","webpack:///./node_modules/@material/list/component.js","webpack:///./app/webpacker/javascripts/date_rules.coffee","webpack:///./app/webpacker/javascripts/components/security_dividends_manager.coffee","webpack:///./node_modules/@material/top-app-bar/constants.js","webpack:///./node_modules/@material/top-app-bar/foundation.js","webpack:///./node_modules/@material/top-app-bar/standard/foundation.js","webpack:///./node_modules/@material/top-app-bar/fixed/foundation.js","webpack:///./node_modules/@material/top-app-bar/short/foundation.js","webpack:///./node_modules/@material/top-app-bar/component.js","webpack:///./node_modules/@material/dom/focus-trap.js","webpack:///./node_modules/@material/drawer/constants.js","webpack:///./node_modules/@material/drawer/dismissible/foundation.js","webpack:///./node_modules/@material/drawer/modal/foundation.js","webpack:///./node_modules/@material/drawer/component.js","webpack:///./node_modules/@material/drawer/util.js","webpack:///./app/webpacker/javascripts/components/top_app_bar.coffee","webpack:///./node_modules/@material/textfield/icon/constants.js","webpack:///./node_modules/@material/textfield/icon/foundation.js","webpack:///./node_modules/@material/textfield/icon/component.js","webpack:///./node_modules/litepicker/dist/litepicker.umd.js","webpack:///./node_modules/@material/tab-indicator/constants.js","webpack:///./node_modules/@material/tab-indicator/foundation.js","webpack:///./node_modules/@material/tab-indicator/fading-foundation.js","webpack:///./node_modules/@material/tab-indicator/sliding-foundation.js","webpack:///./node_modules/@material/tab-indicator/component.js","webpack:///./node_modules/@material/tab-scroller/util.js","webpack:///./node_modules/@material/tab-scroller/constants.js","webpack:///./node_modules/@material/tab-scroller/rtl-scroller.js","webpack:///./node_modules/@material/tab-scroller/rtl-default-scroller.js","webpack:///./node_modules/@material/tab-scroller/rtl-negative-scroller.js","webpack:///./node_modules/@material/tab-scroller/rtl-reverse-scroller.js","webpack:///./node_modules/@material/tab-scroller/foundation.js","webpack:///./node_modules/@material/tab-scroller/component.js","webpack:///./node_modules/@material/tab/constants.js","webpack:///./node_modules/@material/tab/foundation.js","webpack:///./node_modules/@material/tab/component.js","webpack:///./node_modules/@material/tab-bar/constants.js","webpack:///./node_modules/@material/tab-bar/foundation.js","webpack:///./node_modules/@material/tab-bar/component.js","webpack:///./app/webpacker/packs/home.js","webpack:///./app/webpacker/javascripts/minimal/home.coffee"],"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","extendStatics","b","setPrototypeOf","__proto__","Array","__extends","TypeError","String","__","this","constructor","__assign","assign","arguments","length","apply","__values","iterator","next","done","__read","e","ar","push","error","__spreadArray","to","from","pack","slice","concat","element_with_class","element","classes","el","document","createElement","toUpperCase","classList","add","element_with_content","content","innerHTML","append","link_to","text","url","link","setAttribute","link_to_onclick","onclick","addEventListener","preventDefault","_a","_b","cssClasses","LIST_ITEM_ACTIVATED_CLASS","LIST_ITEM_CLASS","LIST_ITEM_DISABLED_CLASS","LIST_ITEM_SELECTED_CLASS","LIST_ITEM_TEXT_CLASS","LIST_ITEM_PRIMARY_TEXT_CLASS","ROOT","evolutionClassNameMap","deprecatedClassNameMap","strings","ACTION_EVENT","SELECTION_CHANGE_EVENT","ARIA_CHECKED","ARIA_CHECKED_CHECKBOX_SELECTOR","ARIA_CHECKED_RADIO_SELECTOR","ARIA_CURRENT","ARIA_DISABLED","ARIA_ORIENTATION","ARIA_ORIENTATION_HORIZONTAL","ARIA_ROLE_CHECKBOX_SELECTOR","ARIA_SELECTED","ARIA_INTERACTIVE_ROLES_SELECTOR","ARIA_MULTI_SELECTABLE_SELECTOR","CHECKBOX_RADIO_SELECTOR","CHECKBOX_SELECTOR","CHILD_ELEMENTS_TO_TOGGLE_TABINDEX","DEPRECATED_SELECTOR","FOCUSABLE_CHILD_ELEMENTS","RADIO_SELECTOR","SELECTED_ITEM_SELECTOR","numbers","UNSET_INDEX","TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS","evolutionAttribute","MDCFoundation","adapter","configurable","init","destroy","MDCComponent","root","foundation","args","_i","initialize","undefined","getDefaultFoundation","initialSyncWithDOM","attachTo","_args","Error","listen","evtType","handler","options","unlisten","removeEventListener","emit","evtData","shouldBubble","evt","CustomEvent","bubbles","detail","createEvent","initCustomEvent","dispatchEvent","form_params","form","params","URLSearchParams","append_input_to_params","input","select","has","append_csrf_token","form_query_url","query","getAttribute","input_to_query_string","substring","params_with_csrf_token","type","checked","encodeURIComponent","token_name","querySelector","token_value","form_element","method","id","hidden_field","perform_form_submit","body","submit","remote_post","request","json","then","message","success","perform_post","contains","remove","confirm_post","Swal","fire","title","dataset","confirm","icon","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","result","post_link_clicked","remote_put","put_link_clicked","remote_delete","response","delete_complete","destination","dest","html","perform_delete","confirm_delete","delete_link_clicked","prepare_post_on_click","add_change_listener_to_submit_form","add_change_listener_to_element","fetch","prepare_form_listeners","prepare_disable_on_click","map","querySelectorAll","add_listener_once","add_listener_once_function","addedDynamicListener","applyPassive","globalObj","window","passiveSupported","passive","err","supportsPassiveOption","closest","selector","matches","parentElement","webkitMatchesSelector","msMatchesSelector","estimateScrollWidth","htmlEl","offsetParent","scrollWidth","clone","cloneNode","style","setProperty","documentElement","appendChild","removeChild","xhr","headers","noop","uid","isNullOrUndef","isArray","toString","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","parseFloat","callback","fn","thisArg","each","loopable","reverse","len","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","target","klen","k","isValidKey","indexOf","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","keyResolvers","v","x","y","resolveObjectKey","obj","resolver","parts","split","tmp","part","_splitKey","_getKeyResolver","_capitalize","str","charAt","defined","isFunction","setsEqual","a","size","item","PI","Math","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","round","almostEquals","niceRange","pow","floor","fraction","isNumber","isNaN","epsilon","abs","_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","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","splice","forEach","_arrayUnique","items","set","Set","requestAnimFrame","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","_len2","rest","_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","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","lim","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","f","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","unpacked","tkeys","j","ok","nk","replace","parseInt","unpack","transparent","toLowerCase","RGB_RE","modHSL","ratio","proto","fromObject","functionParse","rgbParse","Color","ret","_rgb","_valid","valid","rgbString","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","alpha","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","getScope$1","node","scope","values","defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","chart","platform","getDevicePixelRatio","elements","events","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","override","route","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","_scriptable","startsWith","_indexable","_fallback","_measureText","data","gc","longest","string","textWidth","measureText","width","_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","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","left","right","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","opts","lines","strokeWidth","strokeColor","line","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","match","_readValueToProps","props","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","includes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","descriptors","isScriptable","join","delete","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","arr","filter","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","readKey","prefix","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","delta","pointBefore","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","styles","suffix","pos","getRelativePosition","borderBox","boxSizing","paddings","borders","_getCanvasPosition","touches","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","format","getRtlAdapter","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_ref","_boundSegment","segment","bounds","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","_iterableToArrayLimit","minLen","_arrayLikeToArray","test","_unsupportedIterableToArray","_nonIterableRest","arr2","animator","_request","_charts","_running","_lastDate","_notify","anims","date","callbacks","numSteps","duration","initial","currentStep","_refresh","_update","Date","now","remaining","running","draw","_active","_total","tick","pop","_getAnims","charts","complete","progress","event","cb","reduce","acc","cur","_duration","stop","cancel","interpolators","boolean","factor","c0","number","cfg","currentValue","_fn","_easing","easing","_start","delay","_loop","_target","_prop","_from","_to","_promises","active","update","elapsed","remain","wait","promises","Promise","res","rej","resolved","colors","properties","resize","show","animations","visible","hide","config","_properties","configure","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","all","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","shift","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","linkScales","_stacked","addElements","updateIndex","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","base","_len","_key","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","otherMin","otherMax","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","disabled","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","_ref2","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_args2","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","sort","getAllScaleValues","curr","_length","updateMinAndPrev","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","_borderProps","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","_ref3","inflateAmount","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","super","bars","getBasePixel","isHorizontal","ruler","_getRuler","_this$_getSharedOptio","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","_this$_cachedMeta","_this$options","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","offset","grid","_value_","beginAtZero","_this$_cachedMeta2","_this$_getSharedOptio2","tooltip","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_this$_getRotationExt","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_this$_getSharedOptio3","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","_meta$data","_dataset","_getStartAndCountOfVi","_decimated","animated","_this$_cachedMeta3","_this$_getSharedOptio4","_this$options2","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","_fullLoop","pointPosition","getPointPositionForValue","tooltipPosition","useFinalPosition","_this$getProps","getProps","hasValue","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","enabled","getMajorIndices","numMajorIndices","first","newTicks","ceil","skipMajors","evenMajorSpacing","diff","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","padding","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","position","reverseAlign","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_this$getUserBounds","metas","getPadding","getTicks","xLabels","yLabels","beforeLayout","beforeUpdate","_this$options3","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","change","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_this$options4","titleOpts","gridOpts","titleHeight","_this$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_this$options5","_this$options5$ticks","isRotated","labelsBelowTicks","offsetLeft","offsetRight","_this$options6","isFullSize","fullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","idx","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","_this$options7","_this$options8","_this$options8$ticks","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","_this$options9","_titleArgs","titleX","titleY","titleArgs","_layers","tz","z","gz","getSortedVisibleDatasetMetas","axisID","_maxDigits","fontSize","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","unregister","controllers","_typedRegistries","_each","addControllers","_len3","_key3","_len4","_key4","addPlugins","_len5","_key5","addScales","_len6","_key6","getController","_get","getElement","getPlugin","getScale","removeControllers","_len7","_key7","removeElements","_len8","_key8","removePlugins","_len9","_key9","removeScales","_len10","_key10","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","registry","component","camelMethod","_meta$data2","_getStartAndCountOfVi2","_this$_cachedMeta4","_this$options10","DateAdapter","chartOptions","formats","timestamp","amount","unit","startOf","weekday","endOf","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","_metasets$i","_binarySearch","getIntersectItems","isPointInArea","inRange","getNearestCartesianItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","_element$getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","wrap","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","availableWidth","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","_updateDims","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","removeBox","layoutItem","minPadding","layoutBoxes","_box","_box$options","_box$options$stackWei","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition","native","fromNativeEvent","addListener","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","$proxies","attach","detach","isConnected","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","_ref4","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","_ref5","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","_getResolver","getResolver","subPrefixes","_descriptors2","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","animationOptions","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","setTimeout","debounce","resizeDelay","_initialize","_this$options11","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_defaults$datasets$ty","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","_ref6","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","_this$_resizeBeforeDr","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","_ref7","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_this$_active","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","inner","lineJoin","fullCircles","drawFullCircleBorders","version","chartX","chartY","_getAngleFromPoint2","_this$getProps2","rAdjust","betweenAngles","withinRadius","_this$getProps3","_this$options12","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref8","_ref8$move","fastPathSegment","_pathVars2","_ref9","_ref9$move","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","path","_path","strokePathWithCache","segmentMethod","strokePathDirect","_points","_segments","_pointsUpdated","_findStartAndEnd","findStartAndEnd","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","_segments$i","interpolated","inRange$1","hitRadius","mouseX","mouseY","_this$getProps4","inXRange","inYRange","_this$getProps5","hoverRadius","getBarBounds","bar","_bar$getProps","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","inflateRect","refRect","_this$options13","_boundingRects","addRectPath","_this$getProps6","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","_ref10","_ref10$x","_ref10$y","linePoints","_ref11","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","_findPoint","findPoint","unshift","pointValue","firstValue","lastValue","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_source$scale","_getTargetPixel","computeLinearBoundary","computeBoundary","_drawfill","lineOpts","_ref12","_ref12$above","above","_ref12$below","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","_ref13","src","_src$style","_src$style2$backgroun","notShape","clipBounds","interpolatedLineTo","targetLoop","_scale$chart$chartAre","_ref14","interpolatedPoint","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","_labelOpts$boxHeight","boxHeight","_labelOpts$boxWidth","boxWidth","usePointStyle","pointStyleWidth","itemHeight","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_getBoxSize","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","col","adjustHitBoxes","_this$options14","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","cursor","_getBoxSize2","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","_element","afterEvent","ci","_chart$legend$options","_padding","textSize","_drawArgs","fontOpts","_this$_drawArgs","plugin_title","titleBlock","createTitle","WeakMap","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","_controller$getLabelA","getTooltipSize","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","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","_toTRBLCorners2","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","_toTRBLCorners3","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","_ref15","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","findOrAddLabel","addedLabels","addIfString","lastIndexOf","_startValue","_valueRange","_addedLabels","added","_ref16","_this$getUserBounds2","_this$getMinMax","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","_ref17","_endValue","handleTickRangeOptions","_this$getUserBounds3","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","stepSize","computeTickLimit","_this$getMinMax2","isMajor","tickVal","_zero","_this$getMinMax3","_this$getUserBounds4","exp","endExp","endSignificand","significand","lastTick","generateTicks","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","_this$getMinMax4","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","_this$_pointLabelItem","_this$options15","_scale$_pointLabelIte","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_this$getUserBounds5","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","_lookupByKey2","_table$lo","_table$hi","_lookupByKey3","_table$lo2","_table$hi2","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","find_parent_element","nodeName","CLOSING","OPEN","OPENING","ACTION_SELECTOR","ARIA_LIVE_LABEL_TEXT_ATTR","CLOSED_EVENT","CLOSING_EVENT","DISMISS_SELECTOR","LABEL_SELECTOR","OPENED_EVENT","OPENING_EVENT","REASON_ACTION","REASON_DISMISS","SURFACE_SELECTOR","DEFAULT_AUTO_DISMISS_TIMEOUT_MS","INDETERMINATE","MAX_AUTO_DISMISS_TIMEOUT_MS","MIN_AUTO_DISMISS_TIMEOUT_MS","SNACKBAR_ANIMATION_CLOSE_TIME_MS","SNACKBAR_ANIMATION_OPEN_TIME_MS","ARIA_LIVE_DELAY_MS","_super","MDCSnackbarFoundation","_this","defaultAdapter","opened","animationFrame","animationTimer","autoDismissTimer","autoDismissTimeoutMs","closeOnEscape","addClass","announce","notifyClosed","notifyClosing","notifyOpened","notifyOpening","removeClass","clearAutoDismissTimer","cancelAnimationFrame","open","runNextAnimationFrame","timeoutMs","getTimeoutMs","handleAnimationTimerEnd","close","reason","isOpen","setTimeoutMs","minValue","maxValue","getCloseOnEscape","setCloseOnEscape","handleKeyDown","keyCode","handleActionButtonClick","_evt","handleActionIconClick","ariaEl","labelEl","priority","labelText","textContent","trim","MDCSnackbar","announcerFactory","surfaceEl","actionEl","handleSurfaceClick","isActionButton","isActionIcon","registerKeyDownHandler","registerSurfaceClickHandler","deregisterKeyDownHandler","deregisterSurfaceClickHandler","className","actionButtonText","Boolean","addFlashMessage","clazz","removeFlashMessage","div","buildFlashMessage","prepareFlashMessage","surface","existing","User","admin","LABEL_FLOAT_ABOVE","LABEL_REQUIRED","LABEL_SHAKE","MDCFloatingLabelFoundation","shakeAnimationEndHandler","handleShakeAnimationEnd","getWidth","registerInteractionHandler","deregisterInteractionHandler","shake","shouldShake","float","shouldFloat","setRequired","isRequired","MDCFloatingLabel","LINE_RIPPLE_ACTIVE","LINE_RIPPLE_DEACTIVATING","MDCLineRippleFoundation","transitionEndHandler","handleTransitionEnd","hasClass","registerEventHandler","deregisterEventHandler","activate","setRippleCenter","xCoordinate","deactivate","isDeactivating","propertyName","MDCLineRipple","NOTCH_ELEMENT_SELECTOR","NOTCH_ELEMENT_PADDING","NO_LABEL","OUTLINE_NOTCHED","OUTLINE_UPGRADED","MDCNotchedOutlineFoundation","setNotchWidthProperty","removeNotchWidthProperty","notch","notchWidth","closeNotch","MDCNotchedOutline","notchElement","transitionDuration","removeProperty","ROOT_SELECTOR","MDCTextFieldCharacterCounterFoundation","setContent","setCounterValue","currentLength","maxLength","MDCTextFieldCharacterCounter","ARIA_CONTROLS","ARIA_DESCRIBEDBY","INPUT_SELECTOR","LEADING_ICON_SELECTOR","LINE_RIPPLE_SELECTOR","OUTLINE_SELECTOR","PREFIX_SELECTOR","SUFFIX_SELECTOR","TRAILING_ICON_SELECTOR","DISABLED","FOCUSED","HELPER_LINE","INVALID","LABEL_FLOATING","OUTLINED","TEXTAREA","WITH_LEADING_ICON","WITH_TRAILING_ICON","WITH_INTERNAL_COUNTER","LABEL_SCALE","VALIDATION_ATTR_WHITELIST","ALWAYS_FLOAT_TYPES","POINTERDOWN_EVENTS","INTERACTION_EVENTS","MDCTextFieldFoundation","foundationMap","isFocused","receivedUserInput","useNativeValidation","validateOnValueChange","helperText","characterCounter","leadingIcon","trailingIcon","inputFocusHandler","activateFocus","inputBlurHandler","deactivateFocus","inputInputHandler","handleInput","setPointerXOffset","setTransformOrigin","textFieldInteractionHandler","handleTextFieldInteraction","validationAttributeChangeHandler","attributesList","handleValidationAttributeChange","getNativeInput","shouldAlwaysFloat","getValue","isBadInput","isValid","setInputAttr","removeInputAttr","registerTextFieldInteractionHandler","deregisterTextFieldInteractionHandler","registerInputInteractionHandler","deregisterInputInteractionHandler","registerValidationAttributeChangeHandler","deregisterValidationAttributeChangeHandler","activateLineRipple","deactivateLineRipple","setLineRippleTransformOrigin","shakeLabel","floatLabel","setLabelRequired","hasLabel","getLabelWidth","hasOutline","notchOutline","closeOutline","e_1","e_2","required","styleFloating","POINTERDOWN_EVENTS_1","POINTERDOWN_EVENTS_1_1","e_1_1","return","INTERACTION_EVENTS_1","INTERACTION_EVENTS_1_1","e_2_1","validationObserver","setcharacterCounter","e_3","e_4","POINTERDOWN_EVENTS_2","POINTERDOWN_EVENTS_2_1","e_3_1","INTERACTION_EVENTS_2","INTERACTION_EVENTS_2_1","e_4_1","nativeInput","attributeName","styleValidity","openNotch","styleFocused","isPersistent","isValidation","showToScreenReader","isDisabled","targetEvent","targetClientRect","normalizedX","autoCompleteFocus","setValue","isNativeInputValid","setValid","setValidateOnValueChange","shouldValidate","getValidateOnValueChange","setUseNativeValidation","setDisabled","styleDisabled","setHelperTextContent","setLeadingIconAriaLabel","setAriaLabel","setLeadingIconContent","setTrailingIconAriaLabel","setTrailingIconContent","validity","badInput","setValidity","helperTextVisible","isVisible","helperTextId","getId","isFloating","HELPER_TEXT_PERSISTENT","HELPER_TEXT_VALIDATION_MSG","ARIA_HIDDEN","ROLE","MDCTextFieldHelperTextFoundation","getAttr","setAttr","removeAttr","setPersistent","setValidation","inputIsValid","helperTextIsPersistent","validationMsgNeedsDisplay","refreshAlertRole","MDCTextFieldHelperText","attr","MDCTextField","rippleFactory","lineRippleFactory","helperTextFactory","characterCounterFactory","iconFactory","labelFactory","outlineFactory","labelElement","lineRippleElement","lineRipple","outlineElement","outline","helperTextStrings","nextElementSibling","hasHelperLine","helperTextEl","characterCounterStrings","characterCounterEl","leadingIconEl","trailingIconEl","ripple","createRipple","pattern","minLength","prefixText","suffixText","focus","getRootAdapterMethods","getInputAdapterMethods","getLabelAdapterMethods","getLineRippleAdapterMethods","getOutlineAdapterMethods","getFoundationMap","mutationsList","mutation","getAttributesList","attributes","activeElement","foundationForTextField","isTextArea","isOutlined","createAdapter","isSurfaceActive","ponyfill","ANIM_CHECKED_INDETERMINATE","ANIM_CHECKED_UNCHECKED","ANIM_INDETERMINATE_CHECKED","ANIM_INDETERMINATE_UNCHECKED","ANIM_UNCHECKED_CHECKED","ANIM_UNCHECKED_INDETERMINATE","BACKGROUND","CHECKED","CHECKMARK","CHECKMARK_PATH","MIXEDMARK","NATIVE_CONTROL","SELECTED","UPGRADED","ARIA_CHECKED_ATTR","ARIA_CHECKED_INDETERMINATE_VALUE","DATA_INDETERMINATE_ATTR","NATIVE_CONTROL_SELECTOR","TRANSITION_STATE_CHECKED","TRANSITION_STATE_INDETERMINATE","TRANSITION_STATE_INIT","TRANSITION_STATE_UNCHECKED","ANIM_END_LATCH_MS","MDCCheckboxFoundation","currentCheckState","currentAnimationClass","animEndLatchTimer","enableAnimationEndHandler","forceLayout","hasNativeControl","isAttachedToDOM","isChecked","isIndeterminate","removeNativeControlAttr","setNativeControlAttr","setNativeControlDisabled","determineCheckState","updateAriaChecked","handleAnimationEnd","handleChange","transitionCheckState","oldState","newState","getTransitionAnimationClass","CB_PROTO_PROPS","MDCCheckbox","rippleSurface","getNativeControl","indeterminate","installPropertyChangeHooks","uninstallPropertyChangeHooks","offsetWidth","isUnbounded","nativeCb","cbProto","_loop_1","controlState","desc","validDescriptor","nativeGetter","nativeCbDesc","state","CB_PROTO_PROPS_1","CB_PROTO_PROPS_1_1","state_1","CB_PROTO_PROPS_2","CB_PROTO_PROPS_2_1","inputPropDesc","downloadAndRenderGraph","dividendsGraph","innerText","fontFamily","tooltips","add_run_checks_button_listener","add_change_panel_button_listener","add_dividend_table_client_view_click_listener","dividend","tr","add_security_reviewed_button_listener","add_new_share_price_button_listener","toggle_note_expanded","toggle","expand_note_input_box","issue_popup","issue_form","issue_button","show_report_issue_form","buildFromContent","report_issue_form","report_issue_input","report_issue_buttons","report_issue_textarea","report_issue_submit_button","report_issue_cancel_button","button","submit_issue_form","removePopup","prepare_load_on_select","mdc","MDCSelect","replaceAll","location","tom_selected_elements","prepare_selects","maxOptions","maxItems","hidePlaceholder","closeAfterSelect","remove_selects","prepare_post_load","loading_div","loadingAnimation","loading_div_with_message","loading_icon","updateLoadingMessage","MDCRipple","unbounded","instance","browserSupportsCssVars","computeBoundingRect","containsEventTarget","deregisterDocumentInteractionHandler","deregisterResizeHandler","getWindowPageOffset","pageXOffset","pageYOffset","isSurfaceDisabled","registerDocumentInteractionHandler","registerResizeHandler","updateCssVariable","varName","setUnbounded","BG_FOCUSED","FG_ACTIVATION","FG_DEACTIVATION","UNBOUNDED","VAR_FG_SCALE","VAR_FG_SIZE","VAR_FG_TRANSLATE_END","VAR_FG_TRANSLATE_START","VAR_LEFT","VAR_TOP","DEACTIVATION_TIMEOUT_MS","FG_DEACTIVATION_MS","INITIAL_ORIGIN_SCALE","PADDING","TAP_DELAY_MS","ACTIVATION_EVENT_TYPES","POINTER_DEACTIVATION_EVENT_TYPES","activatedTargets","MDCRippleFoundation","activationAnimationHasEnded","activationTimer","fgDeactivationRemovalTimer","fgScale","frame","initialSize","layoutFrame","unboundedCoords","activationState","defaultActivationState","activationTimerCallback","runDeactivationUXLogicIfReady","activateHandler","activateImpl","deactivateHandler","deactivateImpl","focusHandler","handleFocus","blurHandler","handleBlur","resizeHandler","supportsPressRipple","registerRootHandlers","ROOT_1","UNBOUNDED_1","layoutInternal","ROOT_2","UNBOUNDED_2","removeCssVars","deregisterRootHandlers","deregisterDeactivationHandlers","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","ACTIVATION_EVENT_TYPES_1","ACTIVATION_EVENT_TYPES_1_1","registerDeactivationHandlers","POINTER_DEACTIVATION_EVENT_TYPES_1","POINTER_DEACTIVATION_EVENT_TYPES_1_1","ACTIVATION_EVENT_TYPES_2","ACTIVATION_EVENT_TYPES_2_1","POINTER_DEACTIVATION_EVENT_TYPES_2","POINTER_DEACTIVATION_EVENT_TYPES_2_1","rippleStrings","previousActivationEvent","resetActivationState","checkElementMadeActive","animateActivation","translateStart","translateEnd","_c","getFgTranslationCoordinates","startPoint","endPoint","rmBoundedActivationClasses","animateDeactivation","maxDim","updateLayoutCssVars","link_button","raised","secondary","outlined","submit_button","dropdown_icon","svg","createElementNS","setAttributeNS","inactive_polygon","active_polygon","forEvents","MicroEvent","_events","on","fct","off","self","MicroPlugin","Interface","settings","requested","loaded","static","initializePlugins","queue","require","loadPlugin","latin_pat","accent_pat","accent_reg","diacritic_patterns","latin_convert","convert_pat","code_points","asciifold","foreignletter","arrayToPattern","chars","glue","escapeToPattern","escaped","diacritic","escape_regex","allSubstrings","subresult","generateDiacritics","diacritics","code_range","fromCharCode","latin","patt","latin_chars","sub_pat","diacriticRegexPoints","regex","no_accent","getAttrNesting","scoreValue","token","score","search","propToArray","iterate","Sifter","tokenize","respect_word_boundaries","weights","tokens","words","field_regex","word","field_match","field","getScoreFunction","prepareSearch","_getScoreFunction","token_count","fields","field_count","getAttrFn","scoreObject","sum","conjunction","getSortFunction","_getSortFunction","implicit_score","sort_empty","sort_flds","multipliers","get_field","sort_flds_count","sort_fld","multiplier","optsUser","nesting","fn_score","_","fn_sort","getDom","jquery","HTMLElement","isHtmlString","firstChild","escapeQuery","triggerEvent","dom_el","event_name","initEvent","applyCSS","css","addClasses","elmts","norm_classes","classesArray","castAsArray","cls","removeClasses","_classes","parentMatch","wrapper","getTail","list","isEmptyObject","nodeIndex","amongst","previousElementSibling","attrs","replaceNode","replacement","replaceChild","highlight","highlightText","spannode","middlebit","splitText","middleclone","highlightChildren","nodeType","childNodes","tagName","highlightRecursive","removeHighlight","KEY_A","KEY_RETURN","KEY_ESC","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_BACKSPACE","KEY_DELETE","KEY_TAB","KEY_SHORTCUT","navigator","userAgent","optgroups","delimiter","splitOn","persist","createOnBlur","createFilter","openOnFocus","shouldOpen","hideSelected","duplicates","addPrecedence","selectOnTab","preload","allowEmptyOption","loadThrottle","loadingClass","dataAttr","optgroupField","valueField","labelField","disabledField","optgroupLabelField","optgroupValueField","lockOptgroupOrder","sortField","searchField","searchConjunction","wrapperClass","controlClass","dropdownClass","dropdownContentClass","itemClass","optionClass","dropdownParent","controlInput","copyClassesToDropdown","placeholder","shouldLoad","hash_key","get_hash","escape_html","loadDebounce","loading","loadedSearches","debounce_events","types","event_args","getSelection","selectionStart","selectionEnd","stopPropagation","addEvent","isKeyDown","key_name","altKey","ctrlKey","shiftKey","metaKey","existing_id","addSlashes","getSettings","settings_user","attr_data","field_label","field_value","field_disabled","field_optgroup","field_optgroup_label","field_optgroup_value","tag_name","optionsMap","group_count","readData","addOption","addGroup","settings_element","init_textbox","data_raw","opt","group","option_data","$option","selected","optgroup","optgroup_data","children","hasAttribute","child","instance_i","TomSelect","input_arg","user_settings","control_input","dropdown","control","dropdown_content","focus_node","tabIndex","is_select_tag","inputId","sifter","isInvalid","isLocked","isInputHidden","isSetup","ignoreFocus","ignoreHover","hasOptions","currentResults","caretPos","activeOption","activeItems","userOptions","tomselect","setupCallbacks","setupTemplates","_render","inputMode","setup","passive_event","listboxId","role","control_id","label_click","for","label_id","classes_plugins","multiple","load","target_match","onOptionHover","capture","onOptionSelect","onItemSelect","onKeyDown","onKeyPress","onInput","positionDropdown","onBlur","onFocus","onPaste","doc_mousedown","composedPath","blur","inputState","win_scroll","win_hover","revertSettings","insertAdjacentElement","sync","refreshState","updateOriginalInput","refreshItems","disable","enable","onChange","setupOptions","addOptions","registerOptionGroup","templates","escape","lastQuery","clearActiveItems","onMouseDown","pastedText","inputValue","splitInput","piece","addItem","createItem","character","which","selectAll","getAdjacent","setActiveOption","canSelect","advanceSelection","deleteSelection","refreshOptions","wasFocused","showInput","hasFocus","setActiveItem","setCaret","canLoad","loadCallback","clearActiveOption","setTextboxValue","silent","addItems","setMaxItems","eventName","begin","swap","getLastActive","setActiveItemClass","removeActiveItem","hideInput","last_active","scroll","scrollToOption","behavior","height_menu","scrollTop","height_item","offsetHeight","scrollBehavior","controlChildren","getSearchOptions","calculateScore","hashed","triggerDropdown","has_create_option","active_value","active_group","groups","groups_order","results","active_option","show_dropdown","opt_value","option_el","getOption","createDocumentFragment","$id","$order","group_options","header","group_html","tok","add_template","template","insertBefore","canCreate","active_index","selectable","user_created","dat","registerOption","addOptionGroup","hashed_id","removeOptionGroup","clearOptionGroups","updateOption","item_new","index_item","value_old","value_new","getItem","uncacheValue","option_new","removeOption","removeItem","clearOptions","boundFilter","clearFilter","$div","isPending","wasFull","isFull","insertAtCaret","output","lock","created","unlock","refreshValidityState","wrap_classList","empty_option","has_selected","AddSelected","visibility","scrollY","scrollX","selection","tail","rm_items","shouldDelete","onDelete","adjacent","moveCaret","new_pos","templateName","when","new_fn","orig_method","result_new","change_listener","checkbox_options","orig_onOptionSelect","UpdateCheckbox","checkbox","HTMLInputElement","orig_render_option","rendered","prepend","clear_button","drag_drop","$","sortable","orig_lock","orig_unlock","$control","forcePlaceholderSize","ui","helper","overflow","dropdown_header","headerClass","titleRowClass","labelClass","closeClass","close_link","caret_position","dropdown_input","orig_onBlur","relatedTarget","preventScroll","input_autogrow","test_input","cssText","transfer_styles","style_name","no_backspace_delete","orig_deleteSelection","no_active_items","optgroup_columns","orig_keydown","previousSibling","nextSibling","remove_button","orig_render_item","close_button","restore_on_backspace","virtual_scroll","orig_canLoad","orig_clearActiveOption","orig_loadCallback","load_more_opt","pagination","loading_more","default_values","shouldLoadMore","scrollHeight","firstUrl","canLoadMore","setNextUrl","next_url","getUrl","no_more_results","define","factory","_defineProperties","_createClass","Constructor","protoProps","staticProps","_extends","_inheritsLoose","subClass","superClass","_setPrototypeOf","_getPrototypeOf","_isNativeReflectConstruct","construct","sham","valueOf","_construct","Parent","Class","Function","_wrapNativeSuper","Wrapper","_objectWithoutPropertiesLoose","excluded","sourceKeys","_createForOfIteratorHelperLoose","allowArrayLike","it","LuxonError","_Error","InvalidDateTimeError","_LuxonError","toMessage","InvalidIntervalError","_LuxonError2","InvalidDurationError","_LuxonError3","ConflictingSpecificationError","_LuxonError4","InvalidUnitError","_LuxonError5","InvalidArgumentError","_LuxonError6","ZoneIsAbstractError","_LuxonError7","DATE_SHORT","DATE_MED","DATE_MED_WITH_WEEKDAY","DATE_FULL","DATE_HUGE","TIME_SIMPLE","TIME_WITH_SECONDS","TIME_WITH_SHORT_OFFSET","timeZoneName","TIME_WITH_LONG_OFFSET","TIME_24_SIMPLE","hourCycle","TIME_24_WITH_SECONDS","TIME_24_WITH_SHORT_OFFSET","TIME_24_WITH_LONG_OFFSET","DATETIME_SHORT","DATETIME_SHORT_WITH_SECONDS","DATETIME_MED","DATETIME_MED_WITH_SECONDS","DATETIME_MED_WITH_WEEKDAY","DATETIME_FULL","DATETIME_FULL_WITH_SECONDS","DATETIME_HUGE","DATETIME_HUGE_WITH_SECONDS","isUndefined","isInteger","hasRelative","RelativeTimeFormat","bestBy","by","best","pair","integerBetween","padStart","parseInteger","parseFloating","parseMillis","roundTo","digits","towardZero","trunc","isLeapYear","daysInYear","daysInMonth","modMonth","floorMod","objToLocalTS","UTC","setUTCFullYear","getUTCFullYear","weeksInWeekYear","weekYear","untruncateYear","parseZoneInfo","ts","offsetFormat","timeZone","intlOpts","modified","DateTimeFormat","formatToParts","find","signedOffset","offHourStr","offMinuteStr","offHour","offMin","is","asNumber","numericValue","normalizeObject","normalizer","u","formatOffset","hours","minutes","RangeError","timeObject","pick","ianaRegex","monthsLong","monthsShort","monthsNarrow","months","weekdaysLong","weekdaysShort","weekdaysNarrow","weekdays","meridiems","erasLong","erasShort","erasNarrow","eras","stringifyTokens","splits","tokenToString","_step","_iterator","literal","_macroTokenToFormatOpts","DD","DDD","DDDD","tt","ttt","tttt","TT","TTT","TTTT","ff","fff","ffff","FF","FFF","FFFF","Formatter","formatOpts","loc","systemLoc","parseFormat","fmt","currentFull","bracketed","macroTokenToFormatOpts","_proto","formatWithSystemDefault","dt","redefaultToSystem","dtFormatter","formatDateTime","formatDateTimeParts","resolvedOptions","forceSimple","padTo","numberFormatter","formatDateTimeFromString","knownEnglish","listingMode","useDateTimeFormatter","outputCalendar","extract","isOffsetFixed","allowZ","zone","meridiem","meridiemForDateTime","standalone","monthForDateTime","weekdayForDateTime","era","eraForDateTime","offsetName","zoneName","weekNumber","ordinal","maybeMacro","formatDurationFromString","dur","lildur","_this2","tokenToField","realTokens","found","collapsed","shiftTo","mapped","Invalid","explanation","Zone","equals","otherZone","singleton$1","SystemZone","_Zone","getTimezoneOffset","dtfCache","typeToPos","ianaZoneCache","IANAZone","isValidZone","isValidSpecifier","dtf","hour12","formatted","filled","_formatted$i","partsOffset","fMonth","fDay","hackyOffset","adOrBc","asTS","over","singleton","FixedOffsetZone","fixed","utcInstance","parseSpecifier","InvalidZone","normalizeZone","defaultZone","lowered","throwOnInvalid","defaultLocale","defaultNumberingSystem","defaultOutputCalendar","Settings","resetCaches","Locale","numberingSystem","_excluded","_excluded2","intlLFCache","intlDTCache","getCachedDTF","locString","intlNumCache","intlRelCache","sysLocaleCache","listStuff","defaultOK","englishFn","intlFn","PolyNumberFormatter","intl","otherOpts","useGrouping","minimumIntegerDigits","inf","getCachedINF","PolyDateFormatter","isUniversal","gmtOffset","offsetZ","DateTime","fromMillis","_proto2","toJSDate","PolyRelFormatter","isEnglish","rtf","_opts","cacheKeyOpts","getCachedRTF","_proto3","narrow","units","years","quarters","weeks","days","seconds","lastable","isDay","isInPast","fmtValue","singular","lilUnits","fmtUnit","formatRelativeTime","numbering","specifiedLocale","_parseLocaleString","localeStr","uIndex","smaller","calendar","parseLocaleString","parsedLocale","parsedNumberingSystem","parsedOutputCalendar","intlConfigString","weekdaysCache","monthsCache","meridiemCache","eraCache","fastNumbersCached","fromOpts","defaultToEN","_temp","_proto4","isActuallyEn","hasNoWeirdness","alts","redefaultToEN","formatStr","ms","utc","mapMonths","mapWeekdays","_this3","_this4","matching","fastNumbers","relFormatter","listFormatter","ListFormat","getCachedLF","combineRegexes","regexes","full","combineExtractors","extractors","ex","mergedVals","mergedZone","_ex","patterns","_patterns","_patterns$_i","extractor","simpleParse","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","int","extractISOTime","milliseconds","extractISOOffset","fullOffset","extractIANAZone","isoTimeOnly","isoDuration","extractISODuration","yearStr","monthStr","weekStr","dayStr","hourStr","minuteStr","secondStr","millisecondsStr","hasNegativePrefix","negativeSeconds","maybeNegate","force","obsOffsets","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","fromStrings","weekdayStr","rfc2822","extractRFC2822","obsOffset","milOffset","rfc1123","rfc850","ascii","extractRFC1123Or850","extractASCII","isoYmdWithTimeExtensionRegex","isoWeekWithTimeExtensionRegex","isoOrdinalWithTimeExtensionRegex","isoTimeCombinedRegex","extractISOYmdTimeAndOffset","extractISOWeekTimeAndOffset","extractISOOrdinalDateAndTime","extractISOTimeAndOffset","extractISOTimeOnly","sqlYmdWithTimeExtensionRegex","sqlTimeCombinedRegex","extractISOTimeOffsetAndIANAZone","lowOrderMatrix","casualMatrix","daysInYearAccurate","daysInMonthAccurate","accurateMatrix","orderedUnits$1","reverseUnits","conf","conversionAccuracy","Duration","convert","matrix","fromMap","fromUnit","toMap","toUnit","conv","antiTrunc","accurate","invalid","isLuxonDuration","normalizeUnit","fromDurationLike","durationLike","isDuration","fromISO","_parseISODuration","parseISODuration","fromISOTime","_parseISOTimeOnly","parseISOTimeOnly","toFormat","fmtOpts","toHuman","unitDisplay","listStyle","toObject","toISO","toISOTime","millis","toMillis","suppressMilliseconds","suppressSeconds","includePrefix","toJSON","as","plus","minus","mapUnits","_Object$keys","reconfigure","vals","normalizeValues","lastUnit","_step2","built","accumulated","_iterator2","own","ak","down","negated","_i2","_Object$keys2","_step3","_iterator3","INVALID$1","validateStartEnd","Interval","isLuxonInterval","fromDateTimes","builtStart","friendlyDateTime","builtEnd","validateError","_split","startIsValid","endIsValid","_dur","isInterval","toDuration","hasSame","isEmpty","isAfter","dateTime","isBefore","splitAt","dateTimes","splitBy","divideEqually","numberOfParts","overlaps","abutsStart","abutsEnd","engulfs","intersection","union","intervals","_intervals$sort$reduc","sofar","xor","_Array$prototype","currentCount","ends","difference","toISODate","dateFormat","_temp2","_ref3$separator","separator","invalidReason","mapEndpoints","mapFn","Info","hasDST","setZone","isValidIANAZone","_ref$locale","_ref$numberingSystem","_ref$locObj","locObj","_ref$outputCalendar","monthsFormat","_ref2$locale","_ref2$numberingSystem","_ref2$locObj","_ref2$outputCalendar","_temp3","_ref3$locale","_ref3$numberingSystem","_ref3$locObj","weekdaysFormat","_temp4","_ref4$locale","_ref4$numberingSystem","_ref4$locObj","_temp5","_ref5$locale","_temp6","_ref6$locale","features","relative","dayDiff","earlier","later","utcDayStart","toUTC","keepLocalTime","_diff","_highOrderDiffs","lowestOrder","highWater","_differs","_differs$_i","differ","_cursor$plus","_cursor$plus2","highOrderDiffs","remainingMillis","lowerOrderUnits","_cursor$plus3","_Duration$fromMillis","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","numberingSystemsUTF16","hanidecChars","digitRegex","intUnit","post","deser","code","charCodeAt","_numberingSystemsUTF","parseDigits","spaceOrNBSP","spaceOrNBSPRegExp","fixListRegex","stripInsensitivities","oneOf","startIndex","simple","partTypeStyleToTokenVal","short","long","dayperiod","dayPeriod","dummyDateTimeCache","maybeExpandMacroToken","tokenForPart","explainFromTokens","expandMacroTokens","one","two","three","four","six","oneOrTwo","oneToThree","oneToSix","oneToNine","twoToFour","fourToSix","unitate","disqualifyingUnit","_buildRegex","buildRegex","regexString","handlers","_match","matchIndex","rawMatches","specificOffset","q","toField","dateTimeFromMatches","nonLeapLadder","leapLadder","unitOutOfRange","dayOfWeek","js","getUTCDay","computeOrdinal","uncomputeOrdinal","month0","gregorianToWeek","gregObj","weekToGregorian","weekData","weekdayOfJan4","yearInDays","_uncomputeOrdinal","gregorianToOrdinal","gregData","ordinalToGregorian","ordinalData","_uncomputeOrdinal2","hasInvalidGregorianData","validYear","validMonth","validDay","hasInvalidTimeData","validHour","validMinute","validSecond","validMillisecond","MAX_DATE","unsupportedZone","possiblyCachedWeekData","inst","old","fixOffset","localTS","utcGuess","o2","o3","tsToObj","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","objToTS","adjustTime","oPre","millisToAdd","_fixOffset","parseDataToDateTime","parsedZone","interpretationZone","toTechFormat","_toISODate","extended","longFormat","_toISOTime","includeOffset","extendedZone","ianaName","defaultUnitValues","defaultWeekUnitValues","defaultOrdinalUnitValues","orderedUnits","orderedWeekUnits","orderedOrdinalUnits","weeknumber","weeksnumber","weeknumbers","weekyear","weekyears","quickDT","tsNow","_objToTS","diffRelative","calendary","lastOpts","argList","ot","_zone","isLuxonDateTime","_lastOpts","_lastOpts2","fromJSDate","zoneToUse","fromSeconds","offsetProvis","containsOrdinal","containsGregorYear","containsGregorMD","containsGregor","definiteWeekDef","defaultValues","useWeekData","objNow","foundFirst","higherOrderInvalid","validWeek","validWeekday","hasInvalidWeekData","validOrdinal","hasInvalidOrdinalData","_objToTS2","_parseISODate","parseISODate","fromRFC2822","_parseRFC2822Date","preprocessRFC2822","parseRFC2822Date","fromHTTP","_parseHTTPDate","parseHTTPDate","fromFormat","_opts$locale","_opts$numberingSystem","_parseFromTokens","_explainFromTokens","parseFromTokens","fromString","fromSQL","_parseSQL","parseSQL","isDateTime","resolvedLocaleOptions","_Formatter$create$res","toLocal","_ref2$keepLocalTime","_ref2$keepCalendarTim","keepCalendarTime","newTS","offsetGuess","setLocale","mixed","settingWeekStuff","_objToTS4","normalizedUnit","_this$plus","toLocaleString","toLocaleParts","_ref4$format","_ref4$suppressSeconds","_ref4$suppressMillise","_ref4$includeOffset","_ref4$extendedZone","ext","_ref5$format","toISOWeekDate","_ref6$suppressMillise","_ref6$suppressSeconds","_ref6$includeOffset","_ref6$includePrefix","_ref6$extendedZone","_ref6$format","toRFC2822","toHTTP","toSQLDate","toSQLTime","_ref7$includeOffset","_ref7$includeZone","includeZone","_ref7$includeOffsetSp","includeOffsetSpace","toSQL","toSeconds","toUnixInteger","toBSON","includeConfig","otherDateTime","durOpts","otherIsLater","diffed","diffNow","until","inputMs","adjustedToZone","toRelative","toRelativeCalendar","every","fromFormatExplain","_options$locale","_options$numberingSys","fromStringExplain","dateTimeish","VERSION","reload_issues_tab","tab_is_active","set_tab_class","click_tab","reload_dividends_tab","tabBar","tabId","activateTab","preprare_tabs","tab_clicked","tab_button_with_id","load_selected_tab","request_method","set_tab_to_active","history","pushState","tabContent","tab_with_id","set_tab_content","tab_button_has_class","claz","scroll_to_tab_top","scrollTo","offsetTop","add_date_pickers","addDatePicker","parse_date","dropdowns","minYear","maxYear","encode_html","Popup","buildFromObject","contentFromObject","buildPopup","listItem","indent","parseDate","displayVal","setTime","DividendSeriesManager","addListeners","scrollTableTo","seriesArrowButtonClicked","loadSeries","requestAndSetResponse","updateDisplayedSeries","removeOverlay","scrollDiv","buttonClick","showConfirmation","ajaxmethod","changeDividends","securityReviewed","regenerateDividends","addOverlay","overlay","tab","scrollIntoView","hideAddDividendForm","manager","showAddDividendForm","prepare_dividend_series_mananger","series_manager","AnalystFlagSelectionDialog","showDialog","dialogContent","titleRow","flagOptions","buildOption","forecasts","attempt","selectOption","submitForm","set_analyst_flag_status","flag_set_at","flag_set_by","supportsCssVariables_","supportsCssVariables","windowObj","forceRefresh","supportsCssVars","CSS","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","getNormalizedEventCoords","pageOffset","clientRect","normalizedY","documentX","documentY","touchEvent","changedTouches","pageX","pageY","mouseEvent","cssPropertyNameMap","prefixed","standard","transform","jsEventTypeMap","animationend","cssProperty","animationiteration","animationstart","transitionend","isWindow","getCorrectPropertyName","getCorrectEventName","eventType","download_updated_task_list","add_listener_to_confidence_level_buttons","add_button_listener","KEY","normalizedKeys","KEY_CODE","mappedKeyCodes","navigationKeys","normalizeKey","mappedKey","ELEMENTS_KEY_ALLOWED_IN","preventDefaultEvent","matchItem","nextChar","focusItemAtIndex","sortedIndexByFirstChar","focusedItemIndex","skipFocus","isItemAtIndexDisabled","bufferClearTimeout","clearBuffer","typeaheadBuffer","firstChar","itemsMatchingFirstChar","currentFirstChar","sortedIndexCursor","newIndex","cursorPosition","newCursorPosition","matchFirstChar","startingItem","nextCursorPosition","currentItem","isEnabled","matchAllChars","isTypingInProgress","handleKeydown","isTargetListItem","isArrowLeft","isArrowUp","isArrowRight","isArrowDown","isHome","isEnd","isEnter","isSpace","handledModifierKeys","createModifierChecker","eventModifiers","getModifierState","modifiers","MDCListFoundation","wrapFocus","isVertical","isSingleSelectionList","areDisabledItemsFocusable","selectedIndex","useActivatedClass","useSelectedAttr","ariaCurrentAttrValue","isCheckboxList","isRadioList","lastSelectedIndex","hasTypeahead","typeaheadState","addClassForElementIndex","getAttributeForElementIndex","getFocusedElementIndex","getListItemCount","hasCheckboxAtIndex","hasRadioAtIndex","isCheckboxCheckedAtIndex","isFocusInsideList","isRootFocused","listItemAtIndexHasClass","notifyAction","notifySelectionChange","removeClassForElementIndex","setAttributeForElementIndex","setCheckedCheckboxOrRadioAtIndex","setTabIndexForListItemChildren","getPrimaryTextAtIndex","maybeInitializeSingleSelection","typeaheadInitSortedIndex","getFocusedItemIndex","setWrapFocus","setVerticalOrientation","setSingleSelection","getSelectedIndexFromDOM","setDisabledItemsFocusable","selectedItemIndex","setUseActivatedClass","listItemsCount","hasSelectedClass","hasActivatedClass","setHasTypeahead","isTypeaheadInProgress","useActivated","setUseSelectedAttribute","useSelected","getSelectedIndex","setSelectedIndex","isIndexValid","setCheckboxAtIndex","setRadioAtIndex","setSingleSelectionAtIndex","handleFocusIn","listItemIndex","handleFocusOut","setTabindexToFirstSelectedOrFocusedItem","isIndexDisabled","isRootListItem","isForward","isBack","isLetterA","eventHasModifiers","focusLastElement","focusFirstElement","focusedIndex","setSelectedIndexOnAction","currentIndex","focusNextElement","focusPrevElement","toggleCheckboxRange","checkboxListToggleAll","isSelectableList","handleClick","isCheckboxAlreadyUpdatedInAdapter","nextIndex","firstChecked","prevIndex","focusInitialElement","initialIndex","getFirstSelectedOrFocusedItemIndex","setEnabled","itemIndex","forceUpdate","selectedClassName","setAriaForSingleSelectionAtIndex","setTabindexAtIndex","isUserInteraction","isAriaCurrent","ariaAttribute","ariaAttributeValue","getSelectionAttribute","selectionAttribute","currentlySelected","changedIndices","previousIsChecked","newIsChecked","fromIndex","toIndex","toggleIndex","endIndex","targetIndex","minIndex","validateListType","isIndexInRange","listSize","toggleCheckboxAtIndex","newCheckedValue","adapterIsChecked","selectedIndexes","currentlySelectedIndexes","allIndexes","typeaheadMatchItem","startingIndex","listItemCount","getPrimaryTextByItemIndex","primaryText","clearTypeaheadBuffer","MDCList","classNameMap","isEvolutionEnabled","handleClickEvent","handleKeydownEvent","focusInEventListener","handleFocusInEvent","focusOutEventListener","handleFocusOutEvent","initializeListType","ensureFocusable","itemSelector","childSelector","itemEls","focusableChildEls","getPrimaryText","singleLineText","isInteractive","listElements","checkboxListItems","radioSelectedListItem","preselectedItems","toggleEl","tabIndexValue","initialFocusIndex","getListItemIndex","nearestParent","toggleCheckbox","prepare_date_rules","add_query_rules_click_listener","download_date_rules","security","dividendType","dateType","show_date_rules","rule_table","rules","table_head","date_rule_row","confidence","SecurityDividendsManager","ALL_CLASSES","postDividendUpdate","submitValue","setUpdatedDividendValues","frequency","flag","display_amount","fiscal_year","row_class","show_publish_button","submitAmount","amountKeyPress","editDividendAmountClicked","amt","setSelectionRange","copyDividendClicked","declaration_date","ex_div_date","record_date","pay_date","year_end_date","period_end_date","currency_code","toggleShowAdjustedAmounts","dividendRowClicked","clearTableClasses","clicked","clz","prepare_dividend_manager","isAdmin","FIXED_CLASS","FIXED_SCROLLED_CLASS","SHORT_CLASS","SHORT_COLLAPSED_CLASS","SHORT_HAS_ACTION_ITEM_CLASS","DEBOUNCE_THROTTLE_RESIZE_TIME_MS","MAX_TOP_APP_BAR_HEIGHT","ACTION_ITEM_SELECTOR","NAVIGATION_EVENT","NAVIGATION_ICON_SELECTOR","TITLE_SELECTOR","MDCTopAppBarBaseFoundation","getTopAppBarHeight","notifyNavigationIconClicked","getViewportScrollY","getTotalActionItems","handleTargetScroll","handleWindowResize","handleNavigationClick","MDCTopAppBarFoundation","wasDocked","isDockedShowing","currentAppBarOffsetTop","isCurrentlyBeingResized","resizeThrottleId","resizeDebounceId","lastScrollPosition","topAppBarHeight","currentScrollPosition","moveTopAppBar","throttledResizeHandler","checkForUpdate","offscreenBoundaryTop","hasAnyPixelsOffscreen","hasAnyPixelsOnscreen","partiallyShowing","currentHeight","MDCFixedTopAppBarFoundation","wasScrolled","MDCShortTopAppBarFoundation","isAlwaysCollapsed","setAlwaysCollapsed","collapse","maybeCollapseBar","getAlwaysCollapsed","uncollapse","MDCTopAppBar","navIcon","icons","iconRipples","scrollTarget","isFixed","setScrollTarget","win","FOCUS_SENTINEL_CLASS","FocusTrap","elFocusedBeforeTrapFocus","trapFocus","focusableEls","getFocusableElements","wrapTabFocus","skipInitialFocus","initialFocusEl","releaseFocus","sentinelEl","skipRestoreFocus","sentinelStart","createSentinel","sentinelEnd","focusIndex","isDisabledOrHidden","isTabbableAndVisible","isProgrammaticallyHidden","sentinel","ANIMATE","DISMISSIBLE","MODAL","APP_CONTENT_SELECTOR","CLOSE_EVENT","OPEN_EVENT","SCRIM_SELECTOR","LIST_SELECTOR","LIST_ITEM_ACTIVATED_SELECTOR","MDCDismissibleDrawerFoundation","elementHasClass","notifyClose","notifyOpen","saveFocus","restoreFocus","focusActiveNavigationItem","isOpening","isClosing","isElement","closed","MDCModalDrawerFoundation","handleScrimClick","MDCDrawer","innerList","focusTrapFactory","listFactory","listEl","scrim","focusTrap","previousFocus","activeNavItemEl","prepare_header_menu","main","topAppBar","drawer","ICON_EVENT","ICON_ROLE","MDCTextFieldIconFoundation","savedTabIndex","interactionHandler","handleInteraction","notifyIconAction","isEnterKey","MDCTextFieldIcon","default","dateInstance","parseDateTime","lang","getDateZeroTime","shortMonth","longMonth","formatPatterns","shortMonths","longMonths","convertArray","getFullYear","getMonth","getDate","MONTH_JS","toDateString","getSeconds","getDay","getTime","setMonth","setHours","setSeconds","setDate","setFullYear","getWeek","isBetween","isSameOrBefore","isSameOrAfter","isSame","subtract","formatTokens","__spreadArrays","preventClick","scrollToDate","startDate","endDate","elementEnd","numberOfMonths","calendars","litepicker","onMouseEnter","onMouseLeave","autoRefresh","parentEl","inlineMode","updateInput","isSamePicker","shouldShown","shouldResetDatePicked","datePicked","shouldSwapDatePicked","shouldCheckLockDays","disallowLockDaysInRange","isShowning","dayItem","rangeIsLocked","autoApply","setDateRange","buttonPreviousMonth","switchingMonths","splitView","monthItem","findNestedMonthItem","gotoDate","buttonNextMonth","buttonCancel","buttonApply","showTooltip","containerTooltip","hideTooltip","shouldAllowMouseEnter","shouldAllowRepick","allowRepick","isDayItem","triggerElement","renderDay","isInRange","isEndDate","isFlipped","tooltipNumber","pluralSelector","tooltipText","Event","parseInput","getStartDate","getEndDate","Calendar","Litepicker","dateIsLocked","lockDays","lockDaysInclusivity","lockDaysFilter","insert","_lastElementInsertedByStyleLoader","disableLitepickerStyles","locals","containerMain","containerMonths","numberOfColumns","columns2","columns3","columns4","showWeekNumbers","renderMonth","resetButton","buttonText","clearSelection","monthItemHeader","footerHTML","renderFooter","renderTooltip","monthItemName","minDate","maxDate","monthItemYear","previousMonth","nextMonth","noPreviousMonth","noNextMonth","monthItemWeekdaysRow","firstDay","weekdayName","containerDays","calcSkipDays","renderWeekNumber","isToday","isStartDate","minDays","maxDays","selectForward","selectBackward","highlightedDays","isHighlighted","containerFooter","previewDateRange","LPCore","zIndex","mobileFriendly","lockDaysFormat","highlightedDaysFormat","tooltipPluralSelector","PluralRules","findPosition","innerHeight","innerWidth","EventEmitter","getOwnPropertySymbols","_eventsCount","_maxListeners","defaultMaxListeners","newListener","warned","emitter","fired","wrapFn","setMaxListeners","getMaxListeners","prependListener","once","prependOnceListener","removeAllListeners","rawListeners","listenerCount","eventNames","btoa","unescape","sourceRoot","atob","HTMLIFrameElement","contentDocument","media","sourceMap","refs","nonce","nc","styleSheet","createTextNode","setStartDate","setEndDate","setLockDays","setHighlightedDays","setOptions","ACTIVE","FADE","NO_TRANSITION","CONTENT_SELECTOR","MDCTabIndicatorFoundation","computeContentClientRect","setContentStyleProperty","MDCFadingTabIndicatorFoundation","MDCSlidingTabIndicatorFoundation","previousIndicatorClientRect","currentClientRect","widthDelta","xPosition","MDCTabIndicator","horizontalScrollbarHeight_","ANIMATING","SCROLL_AREA_SCROLL","SCROLL_TEST","AREA_SELECTOR","MDCTabScrollerRTL","MDCTabScrollerRTLDefault","getScrollPositionRTL","currentScrollLeft","getScrollAreaScrollLeft","calculateScrollEdges","scrollToRTL","edges","clampedScrollLeft","clampScrollValue","finalScrollPosition","scrollDelta","incrementScrollRTL","getAnimatingScrollPosition","getScrollContentOffsetWidth","getScrollAreaOffsetWidth","MDCTabScrollerRTLNegative","translateX","contentWidth","MDCTabScrollerRTLReverse","MDCTabScrollerFoundation","isAnimating","eventTargetMatchesSelector","addScrollAreaClass","setScrollAreaStyleProperty","setScrollContentStyleProperty","getScrollContentStyleValue","setScrollAreaScrollLeft","computeScrollAreaClientRect","computeScrollContentClientRect","computeHorizontalScrollbarHeight","horizontalScrollbarHeight","getScrollPosition","isRTL","computeCurrentScrollPositionRTL","currentTranslateX","calculateCurrentTranslateX","stopScrollAnimation","evtTarget","incrementScroll","scrollXIncrement","getIncrementScrollOperation","incrementScrollImmediate","operation","scrollToImplRTL","scrollToImpl","getRTLScroller","rtlScrollerInstance","rtlScrollerFactory","transformValue","matrixParams","tx","currentScrollX","safeScrollX","targetScrollX","scrollLeft","initialScrollLeft","newScrollLeft","rootClientRect","contentClientRect","rightEdgeDelta","MDCTabScroller","propName","documentObj","shouldCacheResult","getScrollContentWidth","INTERACTED_EVENT","RIPPLE_SELECTOR","TABINDEX","TAB_INDICATOR_SELECTOR","MDCTabFoundation","focusOnActivate","activateIndicator","deactivateIndicator","notifyInteracted","getOffsetLeft","getOffsetWidth","getContentOffsetLeft","getContentOffsetWidth","isActive","setFocusOnActivate","computeDimensions","rootWidth","rootLeft","contentLeft","contentRight","rootRight","MDCTab","tabIndicatorFactory","rippleFoundation","tabIndicatorElement","tabIndicator","computeIndicatorClientRect","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","END_KEY","ENTER_KEY","HOME_KEY","SPACE_KEY","TAB_ACTIVATED_EVENT","TAB_SCROLLER_SELECTOR","TAB_SELECTOR","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","END_KEYCODE","ENTER_KEYCODE","EXTRA_SCROLL_AMOUNT","HOME_KEYCODE","SPACE_KEYCODE","ACCEPTABLE_KEYS","KEYCODE_MAP","MDCTabBarFoundation","useAutomaticActivation","setActiveTab","activateTabAtIndex","deactivateTabAtIndex","focusTabAtIndex","getTabIndicatorClientRectAtIndex","getTabDimensionsAtIndex","getPreviousActiveTabIndex","getFocusedTabIndex","getIndexOfTabById","getTabListLength","notifyTabActivated","setUseAutomaticActivation","previousClientRect","previousActiveIndex","indexIsInRange","getKeyFromEvent","isActivationKey","determineTargetFromKey","focusedTabIndex","handleTabInteraction","scrollIntoViewImplRTL","scrollIntoViewImpl","origin","maxIndex","calculateScrollIncrement","scrollPosition","barWidth","nextTabDimensions","relativeContentLeft","leftIncrement","rightIncrement","calculateScrollIncrementRTL","scrollContentWidth","findAdjacentTabIndexClosestToEdge","tabDimensions","relativeRootLeft","relativeRootRight","relativeRootDelta","findAdjacentTabIndexClosestToEdgeRTL","rootDelta","scrollIncrement","tabIdCounter","MDCTabBar","tabList","tabFactory","tabScrollerFactory","instantiateTabs","tabScroller","instantiatetabScroller","tabElements","getTabElements","tabScrollerElement"],"mappings":"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","file":"js/home-d5399b853631bac1a89e.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 = \"https://cdn-uat.woodseer.global/packs/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 89);\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n/* global Reflect, Promise */\n\nvar extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n};\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\nexport var __assign = function () {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j];\n return r;\n}\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n function fulfill(value) {\n resume(\"next\", value);\n }\n function reject(value) {\n resume(\"throw\", value);\n }\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n return cooked;\n}\n;\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;\n}\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || typeof receiver !== \"object\" && typeof receiver !== \"function\") throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}","export element_with_class = (element, classes...) ->\n el = document.createElement(element.toUpperCase())\n el.classList.add c for c in classes when c isnt null\n el\n\nexport element_with_content = (element, content, classes...) ->\n el = element_with_class(element, classes...)\n if typeof(content) == 'string' and content[0] == '&'\n el.innerHTML = content\n else\n el.append content\n el\n\nexport link_to = (text, url, classes...) ->\n link = element_with_content('a', text, classes...)\n link.setAttribute('href', url)\n link\n\nexport link_to_onclick = (text, onclick, classes...) ->\n link = link_to(text, '#', classes...)\n link.addEventListener 'click', (e) ->\n e.preventDefault()\n onclick()\n link","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar _a, _b;\nvar cssClasses = {\n LIST_ITEM_ACTIVATED_CLASS: 'mdc-list-item--activated',\n LIST_ITEM_CLASS: 'mdc-list-item',\n LIST_ITEM_DISABLED_CLASS: 'mdc-list-item--disabled',\n LIST_ITEM_SELECTED_CLASS: 'mdc-list-item--selected',\n LIST_ITEM_TEXT_CLASS: 'mdc-list-item__text',\n LIST_ITEM_PRIMARY_TEXT_CLASS: 'mdc-list-item__primary-text',\n ROOT: 'mdc-list'\n};\nvar evolutionClassNameMap = (_a = {}, _a[\"\" + cssClasses.LIST_ITEM_ACTIVATED_CLASS] = 'mdc-list-item--activated', _a[\"\" + cssClasses.LIST_ITEM_CLASS] = 'mdc-list-item', _a[\"\" + cssClasses.LIST_ITEM_DISABLED_CLASS] = 'mdc-list-item--disabled', _a[\"\" + cssClasses.LIST_ITEM_SELECTED_CLASS] = 'mdc-list-item--selected', _a[\"\" + cssClasses.LIST_ITEM_PRIMARY_TEXT_CLASS] = 'mdc-list-item__primary-text', _a[\"\" + cssClasses.ROOT] = 'mdc-list', _a);\nvar deprecatedClassNameMap = (_b = {}, _b[\"\" + cssClasses.LIST_ITEM_ACTIVATED_CLASS] = 'mdc-deprecated-list-item--activated', _b[\"\" + cssClasses.LIST_ITEM_CLASS] = 'mdc-deprecated-list-item', _b[\"\" + cssClasses.LIST_ITEM_DISABLED_CLASS] = 'mdc-deprecated-list-item--disabled', _b[\"\" + cssClasses.LIST_ITEM_SELECTED_CLASS] = 'mdc-deprecated-list-item--selected', _b[\"\" + cssClasses.LIST_ITEM_TEXT_CLASS] = 'mdc-deprecated-list-item__text', _b[\"\" + cssClasses.LIST_ITEM_PRIMARY_TEXT_CLASS] = 'mdc-deprecated-list-item__primary-text', _b[\"\" + cssClasses.ROOT] = 'mdc-deprecated-list', _b);\nvar strings = {\n ACTION_EVENT: 'MDCList:action',\n SELECTION_CHANGE_EVENT: 'MDCList:selectionChange',\n ARIA_CHECKED: 'aria-checked',\n ARIA_CHECKED_CHECKBOX_SELECTOR: '[role=\"checkbox\"][aria-checked=\"true\"]',\n ARIA_CHECKED_RADIO_SELECTOR: '[role=\"radio\"][aria-checked=\"true\"]',\n ARIA_CURRENT: 'aria-current',\n ARIA_DISABLED: 'aria-disabled',\n ARIA_ORIENTATION: 'aria-orientation',\n ARIA_ORIENTATION_HORIZONTAL: 'horizontal',\n ARIA_ROLE_CHECKBOX_SELECTOR: '[role=\"checkbox\"]',\n ARIA_SELECTED: 'aria-selected',\n ARIA_INTERACTIVE_ROLES_SELECTOR: '[role=\"listbox\"], [role=\"menu\"]',\n ARIA_MULTI_SELECTABLE_SELECTOR: '[aria-multiselectable=\"true\"]',\n CHECKBOX_RADIO_SELECTOR: 'input[type=\"checkbox\"], input[type=\"radio\"]',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]',\n CHILD_ELEMENTS_TO_TOGGLE_TABINDEX: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a,\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" button:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" a\\n \",\n DEPRECATED_SELECTOR: '.mdc-deprecated-list',\n FOCUSABLE_CHILD_ELEMENTS: \"\\n .\" + cssClasses.LIST_ITEM_CLASS + \" button:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" a,\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"radio\\\"]:not(:disabled),\\n .\" + cssClasses.LIST_ITEM_CLASS + \" input[type=\\\"checkbox\\\"]:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" button:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" a,\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" input[type=\\\"radio\\\"]:not(:disabled),\\n .\" + deprecatedClassNameMap[cssClasses.LIST_ITEM_CLASS] + \" input[type=\\\"checkbox\\\"]:not(:disabled)\\n \",\n RADIO_SELECTOR: 'input[type=\"radio\"]',\n SELECTED_ITEM_SELECTOR: '[aria-selected=\"true\"], [aria-current=\"true\"]'\n};\nvar numbers = {\n UNSET_INDEX: -1,\n TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS: 300\n};\nvar evolutionAttribute = 'evolution';\nexport { strings, cssClasses, numbers, deprecatedClassNameMap, evolutionAttribute, evolutionClassNameMap };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar MDCFoundation = /** @class */function () {\n function MDCFoundation(adapter) {\n if (adapter === void 0) {\n adapter = {};\n }\n this.adapter = adapter;\n }\n Object.defineProperty(MDCFoundation, \"cssClasses\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports every\n // CSS class the foundation class needs as a property. e.g. {ACTIVE: 'mdc-component--active'}\n return {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"strings\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // semantic strings as constants. e.g. {ARIA_ROLE: 'tablist'}\n return {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"numbers\", {\n get: function () {\n // Classes extending MDCFoundation should implement this method to return an object which exports all\n // of its semantic numbers as constants. e.g. {ANIMATION_DELAY_MS: 350}\n return {};\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFoundation, \"defaultAdapter\", {\n get: function () {\n // Classes extending MDCFoundation may choose to implement this getter in order to provide a convenient\n // way of viewing the necessary methods of an adapter. In the future, this could also be used for adapter\n // validation.\n return {};\n },\n enumerable: false,\n configurable: true\n });\n MDCFoundation.prototype.init = function () {\n // Subclasses should override this method to perform initialization routines (registering events, etc.)\n };\n MDCFoundation.prototype.destroy = function () {\n // Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n };\n return MDCFoundation;\n}();\nexport { MDCFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFoundation;","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __read, __spreadArray } from \"tslib\";\nimport { MDCFoundation } from './foundation';\nvar MDCComponent = /** @class */function () {\n function MDCComponent(root, foundation) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n this.root = root;\n this.initialize.apply(this, __spreadArray([], __read(args)));\n // Note that we initialize foundation here and not within the constructor's\n // default param so that this.root is defined and can be used within the\n // foundation class.\n this.foundation = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation.init();\n this.initialSyncWithDOM();\n }\n MDCComponent.attachTo = function (root) {\n // Subclasses which extend MDCBase should provide an attachTo() method that takes a root element and\n // returns an instantiated component with its root set to that element. Also note that in the cases of\n // subclasses, an explicit foundation class will not have to be passed in; it will simply be initialized\n // from getDefaultFoundation().\n return new MDCComponent(root, new MDCFoundation({}));\n };\n /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */\n MDCComponent.prototype.initialize = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n // Subclasses can override this to do any additional setup work that would be considered part of a\n // \"constructor\". Essentially, it is a hook into the parent constructor before the foundation is\n // initialized. Any additional arguments besides root and foundation will be passed in here.\n };\n\n MDCComponent.prototype.getDefaultFoundation = function () {\n // Subclasses must override this method to return a properly configured foundation class for the\n // component.\n throw new Error('Subclasses must override getDefaultFoundation to return a properly configured ' + 'foundation class');\n };\n MDCComponent.prototype.initialSyncWithDOM = function () {\n // Subclasses should override this method if they need to perform work to synchronize with a host DOM\n // object. An example of this would be a form control wrapper that needs to synchronize its internal state\n // to some property or attribute of the host DOM. Please note: this is *not* the place to perform DOM\n // reads/writes that would cause layout / paint, as this is called synchronously from within the constructor.\n };\n MDCComponent.prototype.destroy = function () {\n // Subclasses may implement this method to release any resources / deregister any listeners they have\n // attached. An example of this might be deregistering a resize event from the window object.\n this.foundation.destroy();\n };\n MDCComponent.prototype.listen = function (evtType, handler, options) {\n this.root.addEventListener(evtType, handler, options);\n };\n MDCComponent.prototype.unlisten = function (evtType, handler, options) {\n this.root.removeEventListener(evtType, handler, options);\n };\n /**\n * Fires a cross-browser-compatible custom event from the component root of the given type, with the given data.\n */\n MDCComponent.prototype.emit = function (evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) {\n shouldBubble = false;\n }\n var evt;\n if (typeof CustomEvent === 'function') {\n evt = new CustomEvent(evtType, {\n bubbles: shouldBubble,\n detail: evtData\n });\n } else {\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(evtType, shouldBubble, false, evtData);\n }\n this.root.dispatchEvent(evt);\n };\n return MDCComponent;\n}();\nexport { MDCComponent };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCComponent;","export form_params = (form) ->\n params = new URLSearchParams()\n append_input_to_params(input, params) for input in form.querySelectorAll('input')\n append_input_to_params(select, params) for select in form.querySelectorAll('select')\n append_input_to_params(input, params) for input in form.querySelectorAll('textarea')\n append_csrf_token(params) unless params.has('authenticity_token')\n params\n\nexport form_query_url = (form) ->\n query = form.getAttribute('action') + \"?\"\n query += input_to_query_string(input) for input in form.querySelectorAll('input')\n query += input_to_query_string(select) for select in form.querySelectorAll('select')\n query.substring(0, query.length - 1)\n\nexport params_with_csrf_token = ->\n params = new URLSearchParams()\n append_csrf_token(params)\n params\n\nappend_input_to_params = (input, params) ->\n if input.type == 'checkbox' and !input.checked\n params.append(input.name, '')\n else\n params.append(input.name, input.value)\n\ninput_to_query_string = (input) ->\n if input.name and input.name.length > 0 and input.value and input.value.length > 0\n return input.name + \"=\" + encodeURIComponent(input.value) + \"&\"\n \"\"\n\nappend_csrf_token = (params) ->\n token_name = document.querySelector('meta[name=csrf-param]').getAttribute('content')\n token_value = document.querySelector('meta[name=csrf-token]').getAttribute('content')\n params.append(token_name, token_value)\n\nexport form_element = (url, method, id) ->\n form = document.createElement('FORM')\n form.setAttribute('action', url)\n form.setAttribute('method', 'POST')\n form.setAttribute('id', id)\n form.append hidden_field('_method', method) if method != 'POST'\n token_name = document.querySelector('meta[name=csrf-param]').getAttribute('content')\n token_value = document.querySelector('meta[name=csrf-token]').getAttribute('content')\n form.append hidden_field(token_name, token_value)\n form\n\nexport hidden_field = (name, value) ->\n input = document.createElement('INPUT')\n input.setAttribute('name', name)\n input.setAttribute('type', 'hidden')\n input.value = value\n input","import {params_with_csrf_token, hidden_field, form_params, form_query_url} from 'components/forms'\nimport {xhr} from 'lib/requests'\nimport {FlashMessage} from 'components/flash'\nimport {find_parent_element} from 'lib/dom_search'\nimport {prepare_selects, prepare_post_load} from 'components/common_components'\nimport {add_date_pickers} from 'components/date_picker'\nimport {loading_div} from 'components/loading'\n\n######################################################\n####################### POSTS ########################\n\nperform_form_submit = (url, method) ->\n form = document.createElement('FORM')\n form.setAttribute('method', 'POST')\n form.setAttribute('action', url)\n token_name = document.querySelector('meta[name=csrf-param]').getAttribute('content')\n token_value = document.querySelector('meta[name=csrf-token]').getAttribute('content') \n form.append hidden_field(token_name, token_value)\n form.append hidden_field('_method', method) if method != 'POST'\n document.body.append form\n form.submit()\n\nremote_post = (url, el) ->\n xhr url, 'POST', params_with_csrf_token(), (request) ->\n request.json().then (json) ->\n message = json.message or \"Success\"\n FlashMessage.success message\n\nperform_post = (url, el) ->\n if el.classList.contains 'append-form'\n perform_form_submit(url, 'POST')\n else\n remote_post(url, el)\n\n if el.classList.contains 'remove-on-click'\n find_parent_element(el, 'TR').remove()\n\nconfirm_post = (url, el) ->\n Swal.fire(\n title: 'Are you sure?',\n text: el.dataset.confirm,\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes'\n ).then (result) -> \n if result.value\n perform_post(url, el)\n\npost_link_clicked = (url, el) ->\n if el.dataset.confirm\n confirm_post(url, el)\n else\n perform_post(url, el)\n\n######################################################\n####################### POSTS ########################\n\nremote_put = (url, el) ->\n params = params_with_csrf_token()\n params.append('_method', 'PUT')\n xhr url, 'POST', params, (request) ->\n request.json().then (json) ->\n message = json.message or \"Success\"\n FlashMessage.success message\n\nput_link_clicked = (url, el) ->\n remote_put(url, el)\n\n if el.classList.contains 'remove-on-click'\n find_parent_element(el, 'TR').remove()\n\n######################################################\n##################### DELETES ########################\n\nremote_delete = (url, el) ->\n xhr url, 'DELETE', null, (response) -> delete_complete(el, response)\n\ndelete_complete = (el, response) ->\n if el.dataset.destination\n if dest = document.querySelector(el.dataset.destination)\n response.text().then (html) ->\n dest.innerHTML = html\n prepare_post_load()\n else\n response.json().then (json) ->\n find_parent_element(el, 'TR').remove()\n message = json.message or \"Entry removed successfully\"\n FlashMessage.success message\n\nperform_delete = (url, el) ->\n if el.classList.contains 'append-form'\n perform_form_submit(url, 'DELETE')\n else\n remote_delete(url, el)\n\nconfirm_delete = (url, el) ->\n Swal.fire(\n title: 'Are you sure?',\n text: el.dataset.confirm,\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n confirmButtonText: 'Yes'\n ).then (result) -> \n if result.value\n perform_delete(url, el)\n\ndelete_link_clicked = (url, el) ->\n if el.dataset.confirm\n confirm_delete(url, el)\n else\n perform_delete(url, el)\n\n######################################################\n\nprepare_post_on_click = (el) ->\n url = el.getAttribute('href')\n el.addEventListener 'click', (e) ->\n e.preventDefault()\n if el.classList.contains'prevent-double-submit'\n return if el.classList.contains 'disabled'\n el.classList.add 'disabled'\n if el.classList.contains 'post-request'\n post_link_clicked(url, el)\n else if el.classList.contains 'put-request'\n put_link_clicked(url, el)\n else\n delete_link_clicked(url, el)\n\nadd_change_listener_to_submit_form = (el) ->\n el.addEventListener 'change', ->\n form = find_parent_element(el, 'FORM')\n if form.classList.contains('ajax')\n xhr form.getAttribute('action'), 'POST', form_params(form)\n else\n form.submit()\n\nadd_change_listener_to_element = (el) ->\n el.addEventListener 'change', ->\n form = find_parent_element(el, 'FORM')\n if dest = document.querySelector(form.dataset.destination)\n dest.append loading_div()\n fetch(form_query_url(form)).then (response) -> response.text().then (html) ->\n if form.dataset.destination\n if dest = document.querySelector(form.dataset.destination)\n dest.innerHTML = html\n prepare_selects()\n add_date_pickers()\n prepare_form_listeners()\n\nprepare_disable_on_click = (el) ->\n el.addEventListener 'click', (e) ->\n e.preventDefault() if el.classList.contains 'disabled'\n el.classList.add 'disabled'\n\n\nexport prepare_form_listeners = ->\n [].map.call document.querySelectorAll('.disable-on-click'), (el) -> add_listener_once(el, -> prepare_disable_on_click(el))\n [].map.call document.querySelectorAll('.post-request, .delete-request, .put-request'), (el) -> add_listener_once(el, -> prepare_post_on_click(el))\n [].map.call document.querySelectorAll('form.submit-on-change select'), (el) -> add_listener_once(el, -> add_change_listener_to_submit_form(el))\n [].map.call document.querySelectorAll('form.submit-on-change input[type=\"checkbox\"]'), (el) -> add_listener_once(el, -> add_change_listener_to_submit_form(el))\n [].map.call document.querySelectorAll('form.get-request select'), (el) -> add_listener_once(el, -> add_change_listener_to_element(el))\n\nexport add_listener_once = (el, add_listener_once_function) ->\n return if el.dataset.addedDynamicListener\n el.dataset.addedDynamicListener = true\n add_listener_once_function(el)\n","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * Determine whether the current browser supports passive event listeners, and\n * if so, use them.\n */\nexport function applyPassive(globalObj) {\n if (globalObj === void 0) {\n globalObj = window;\n }\n return supportsPassiveOption(globalObj) ? {\n passive: true\n } : false;\n}\nfunction supportsPassiveOption(globalObj) {\n if (globalObj === void 0) {\n globalObj = window;\n }\n // See\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n var passiveSupported = false;\n try {\n var options = {\n // This function will be called when the browser\n // attempts to access the passive property.\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n var handler = function () {};\n globalObj.document.addEventListener('test', handler, options);\n globalObj.document.removeEventListener('test', handler, options);\n } catch (err) {\n passiveSupported = false;\n }\n return passiveSupported;\n}","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n/**\n * @fileoverview A \"ponyfill\" is a polyfill that doesn't modify the global prototype chain.\n * This makes ponyfills safer than traditional polyfills, especially for libraries like MDC.\n */\nexport function closest(element, selector) {\n if (element.closest) {\n return element.closest(selector);\n }\n var el = element;\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n}\nexport function matches(element, selector) {\n var nativeMatches = element.matches || element.webkitMatchesSelector || element.msMatchesSelector;\n return nativeMatches.call(element, selector);\n}\n/**\n * Used to compute the estimated scroll width of elements. When an element is\n * hidden due to display: none; being applied to a parent element, the width is\n * returned as 0. However, the element will have a true width once no longer\n * inside a display: none context. This method computes an estimated width when\n * the element is hidden or returns the true width when the element is visble.\n * @param {Element} element the element whose width to estimate\n */\nexport function estimateScrollWidth(element) {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n var htmlEl = element;\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n var clone = htmlEl.cloneNode(true);\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n var scrollWidth = clone.scrollWidth;\n document.documentElement.removeChild(clone);\n return scrollWidth;\n}","import {params_with_csrf_token} from 'components/forms'\n\nexport xhr_get = (url, success = null) -> xhr(url, 'GET', null, success)\n\nexport xhr = (url, method = 'POST', body = null, success = null) ->\n body = params_with_csrf_token() if body == null and method != 'GET'\n headers = { 'X-Requested-With': 'XMLHttpRequest' }\n fetch(url, method: method, body: body, headers: headers).then (response) -> \n success(response) if success","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = function () {\n let id = 0;\n return function () {\n return id++;\n };\n}();\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const 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}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = value => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : value / dimension;\nconst toDimension = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\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 let 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}\nfunction _elementsEqual(a0, a1) {\n let 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}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let 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}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {\n merger: _mergerIf\n });\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const 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}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = value => typeof value !== 'undefined';\nconst isFunction = value => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let 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((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let 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}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU;\n }\n return {\n 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}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end) {\n let 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 || (index => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let 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,\n hi\n };\n}\nconst _lookupByKey = (table, key, value, last) => _lookup(table, value, last ? index => table[index][key] <= value : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let 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}\nconst 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(key => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach(object => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const 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(key => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let 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}\nconst requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || (args => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function () {\n for (var _len2 = arguments.length, rest = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n rest[_key2] = arguments[_key2];\n }\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let 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}\nconst _toLeftRightCenter = align => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const iScale = meta.iScale,\n _parsed = meta._parsed;\n const axis = iScale.axis;\n const _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(_lookupByKey(_parsed, iScale.axis, min).lo, animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(_lookupByKey(_parsed, iScale.axis, max, true).hi + 1, 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,\n count\n };\n}\nfunction _scaleRangesChanged(meta) {\n const xScale = meta.xScale,\n yScale = meta.yScale,\n _scaleRanges = meta._scaleRanges;\n const 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 const 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}\nconst atEdge = t => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => 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 easeInCirc: t => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const 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(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let 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: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const 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: t => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\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}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\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}\nconst 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};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => (b & 0xF0) >> 4 === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\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}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\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}\nconst 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 const a = s * Math.min(l, 1 - l);\n const f = function (n) {\n let 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 const f = function (n) {\n let 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 const rgb = hsl2rgbn(h, 1, 0.5);\n let 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 const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let 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 const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const 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 const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst 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};\nconst 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 const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let 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}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const 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}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const 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(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const 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 let 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}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let 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 get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const 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 interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const 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 opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const 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 lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const 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}\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const 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}\nclass Defaults {\n constructor(_descriptors) {\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 = context => context.chart.platform.getDevicePixelRatio();\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 = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\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 }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: name => !name.startsWith('on'),\n _indexable: name => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n});\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 let 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 let data = cache.data = cache.data || {};\n let 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 let longest = 0;\n const ilen = arrayOfThings.length;\n let 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 const 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 const devicePixelRatio = chart.currentDevicePixelRatio;\n const 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 let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let 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 ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n 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 xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n 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) * 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 const 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 let opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let 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 (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 const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const 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 addRoundedRectPath(ctx, rect) {\n const 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}\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const 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}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? prop => valueOrDefault(value[prop], value[props[prop]]) : prop => value[prop] : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let 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}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const min = minmax.min,\n max = minmax.max;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\nfunction _createResolver(scopes) {\n let prefixes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n let rootScopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : scopes;\n let fallback = arguments.length > 3 ? arguments[3] : undefined;\n let getTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : () => scopes[0];\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: scope => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const 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 const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: ctx => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: scope => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop, () => _resolveWithContext(target, prop, receiver));\n },\n 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() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy) {\n let defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n scriptable: true,\n indexable: true\n };\n const _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 : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n let 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 const _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 const _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 const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const 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 return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let 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, () => subGetTarget(resolver, prop, value));\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 const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\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}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const iScale = meta.iScale;\n const _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'r' : _this$_parsing$key;\n const parsed = new Array(count);\n let 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}\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = indexAxis => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const 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}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let 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 let indexAxis = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points) {\n let indexAxis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let 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 const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\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 let i, ilen, point, inArea, inAreaPrev;\n let 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}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter(pt => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let 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}\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = element => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const 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}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const offsetX = source.offsetX,\n offsetY = source.offsetY;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const canvas = chart.canvas,\n currentDevicePixelRatio = chart.currentDevicePixelRatio;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const _getCanvasPosition = getCanvasPosition(evt, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let 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 let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const 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,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let width = containerSize.width,\n height = containerSize.height;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const 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 height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${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}\nconst supportsEventListenerOptions = function () {\n let passiveSupported = false;\n try {\n const 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 return passiveSupported;\n}();\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\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}\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}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let 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}\nconst getRightToLeftAdapter = function (rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function () {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {},\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n 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 let 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: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment(_ref) {\n let 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\n };\n}\nfunction getSegment(segment, points, bounds) {\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n const count = points.length;\n let start = segment.start,\n end = segment.end,\n loop = segment.loop;\n let 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,\n end,\n loop,\n style: segment.style\n };\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const count = points.length;\n const _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n const _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let 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,\n count,\n 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,\n loop,\n count,\n style\n }));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let 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,\n end\n };\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const 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\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\n });\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n if (spanGaps === true) {\n return splitByStyles(line, [{\n start,\n end,\n loop\n }], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const 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 const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const datasetIndex = line._datasetIndex,\n spanGaps = line.options.spanGaps;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const 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 for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const 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\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 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 { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined 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, log10 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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\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 _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; }\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n/*!\n * Chart.js v3.9.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, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update() {\n let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let 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 this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._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 _getAnims(chart) {\n const charts = this._charts;\n let 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 listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const 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((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let 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 remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const 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 active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const 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 cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let 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 wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.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});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: name => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n});\ndefaults.describe('animations', {\n _fallback: 'animation'\n});\ndefaults.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: v => v | 0\n }\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach(prop => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {});\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const 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 update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const 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 let 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 const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const 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 const x = scaleClip(xScale, allowedOverflow);\n const 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 let 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 const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let 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 let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let 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 const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let 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 const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const _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 const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const chart = controller.chart,\n meta = controller._cachedMeta;\n const stacks = chart._stacks || (chart._stacks = {});\n const iScale = meta.iScale,\n vScale = meta.vScale,\n datasetIndex = meta.index;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const index = item[iAxis],\n value = item[vAxis];\n const 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 const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n 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,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = mode => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n};\nclass DatasetController {\n constructor(chart, datasetIndex) {\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.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const 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 getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _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 const 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 addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const 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 configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const 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 parse(start, count) {\n const meta = this._cachedMeta,\n data = this._data;\n const iScale = meta.iScale,\n _stacked = meta._stacked;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let 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 const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\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 parsePrimitiveData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = new Array(count);\n let 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 parseObjectData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const _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 const parsed = new Array(count);\n let 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 getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const 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 getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const _getUserBounds = getUserBounds(otherScale),\n otherMin = _getUserBounds.min,\n otherMax = _getUserBounds.max;\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const 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 getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let 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 getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const 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 _update(mode) {\n const 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 update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const 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 getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const 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 resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType) {\n let mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n let index = arguments.length > 2 ? arguments[2] : undefined;\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const 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 _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n 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 updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const _ref of this._syncList) {\n var _ref2 = _slicedToArray(_ref, 3);\n const method = _ref2[0];\n const arg1 = _ref2[1];\n const arg2 = _ref2[2];\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const 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 _insertElements(start, count) {\n let resetNewElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const 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 updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const _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, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let 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((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const 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 const thickness = options.barThickness;\n let 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,\n start: ruler.pixels[index] - size / 2\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const 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 const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let 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,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n 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 const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let 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 let 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,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const 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 const _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, _ref3, ratio) {\n let inflateAmount = _ref3.inflateAmount;\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const _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 const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let 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 updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const 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 getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const index = this.index,\n vScale = this._cachedMeta.vScale;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const _this$_getSharedOptio = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio.sharedOptions,\n includeOptions = _this$_getSharedOptio.includeOptions;\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n 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 const 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 _getStacks(last, dataIndex) {\n const iScale = this._cachedMeta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = meta => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\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 if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let 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 const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n 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 _calculateBarValuePixels(index) {\n const _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 const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let 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 const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let 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 const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const 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 const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const 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,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let 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}\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};\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const 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 getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let 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 getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _this$_cachedMeta2 = this._cachedMeta,\n iScale = _this$_cachedMeta2.iScale,\n vScale = _this$_cachedMeta2.vScale;\n const _this$_getSharedOptio2 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio2.sharedOptions,\n includeOptions = _this$_getSharedOptio2.includeOptions;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const 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 resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const 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}\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 plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const 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,\n ratioY,\n offsetX,\n offsetY\n };\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = i => +data[i];\n if (isObject(data[start])) {\n const _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'value' : _this$_parsing$key;\n getter = i => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const 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 update(mode) {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const _this$_getRotationExt = this._getRotationExtents(),\n circumference = _this$_getRotationExt.circumference,\n rotation = _this$_getRotationExt.rotation;\n const _getRatioAndOffset = getRatioAndOffset(rotation, circumference, cutout),\n ratioX = _getRatioAndOffset.ratioX,\n ratioY = _getRatioAndOffset.ratioY,\n offsetX = _getRatioAndOffset.offsetX,\n offsetY = _getRatioAndOffset.offsetY;\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const 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 _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const 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 updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const _this$_getSharedOptio3 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio3.sharedOptions,\n includeOptions = _this$_getSharedOptio3.includeOptions;\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n 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 calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const 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 calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let 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 getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n};\nDoughnutController.descriptors = {\n _scriptable: name => name !== 'spacing',\n _indexable: name => name !== 'spacing'\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const pointStyle = chart.legend.options.labels.pointStyle;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset,\n _meta$data = meta.data,\n points = _meta$data === void 0 ? [] : _meta$data,\n _dataset = meta._dataset;\n const animationsDisabled = this.chart._animationsDisabled;\n let _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 const 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\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _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 const _this$_getSharedOptio4 = this._getSharedOptions(start, mode),\n sharedOptions = _this$_getSharedOptio4.sharedOptions,\n includeOptions = _this$_getSharedOptio4.includeOptions;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const _this$options2 = this.options,\n spanGaps = _this$options2.spanGaps,\n segment = _this$options2.segment;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const 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 getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n};\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.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 _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const 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 const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let 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 const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n }\n },\n indexAxis: 'r',\n startAngle: 0\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const pointStyle = chart.legend.options.labels.pointStyle;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\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};\nclass PieController extends DoughnutController {}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n};\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const _this$getProps = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps.x,\n y = _this$getProps.y;\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const 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 const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n 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(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let 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\n};\ndefaults.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 drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 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});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: name => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: name => name !== 'borderDash' && name !== 'tickBorderDash'\n});\ndefaults.describe('scales', {\n _fallback: 'scale'\n});\ndefaults.describe('scale.ticks', {\n _scriptable: name => name !== 'backdropPadding' && name !== 'callback',\n _indexable: name => name !== 'backdropPadding'\n});\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const 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 const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let 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 let count = 0;\n let next = majorIndices[0];\n let 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 const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let 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 const len = arr.length;\n let 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}\nconst reverseAlign = align => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let 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 const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let 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, cache => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let 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 const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const 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,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let 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 const top = scale.top,\n left = scale.left,\n bottom = scale.bottom,\n right = scale.right,\n chart = scale.chart;\n const chartArea = chart.chartArea,\n scales = chart.scales;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const 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 const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n 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 parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let _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 getMinMax(canStack) {\n let _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 let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for (let 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 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 getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const _this$options3 = this.options,\n beginAtZero = _this$options3.beginAtZero,\n grace = _this$options3.grace,\n tickOpts = _this$options3.ticks;\n const 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 const 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 configure() {\n let reversePixels = this.options.reverse;\n let 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 afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n 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 afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let 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 afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const 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 afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const chart = this.chart,\n _this$options4 = this.options,\n tickOpts = _this$options4.ticks,\n titleOpts = _this$options4.title,\n gridOpts = _this$options4.grid;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const 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 const _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 const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const 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 _calculatePadding(first, last, sin, cos) {\n const _this$options5 = this.options,\n _this$options5$ticks = _this$options5.ticks,\n align = _this$options5$ticks.align,\n padding = _this$options5$ticks.padding,\n position = _this$options5.position;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let 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 let paddingTop = last.height / 2;\n let 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 _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 afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const _this$options6 = this.options,\n axis = _this$options6.axis,\n position = _this$options6.position;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let 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 _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let 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 _computeLabelSizes(ticks, length) {\n const ctx = this.ctx,\n caches = this._longestTextCache;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let 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 const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = idx => ({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const min = this.min,\n max = this.max;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const 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 _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const 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 _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const grid = options.grid,\n position = options.position;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function (pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let 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 const positionAxisID = Object.keys(position)[0];\n const 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 const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const 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,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const position = options.position,\n optionTicks = options.ticks;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const align = optionTicks.align,\n crossAlign = optionTicks.crossAlign,\n padding = optionTicks.padding,\n mirror = optionTicks.mirror;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let 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 const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const 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 const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\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 const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const 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 const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let 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 } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - 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,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const _this$options7 = this.options,\n position = _this$options7.position,\n ticks = _this$options7.ticks;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let 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 _getYAxisLabelAlignment(tl) {\n const _this$options8 = this.options,\n position = _this$options8.position,\n _this$options8$ticks = _this$options8.ticks,\n crossAlign = _this$options8$ticks.crossAlign,\n mirror = _this$options8$ticks.mirror,\n padding = _this$options8$ticks.padding;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let 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,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const 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 drawBackground() {\n const 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 getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const 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 const 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 drawBorder() {\n const chart = this.chart,\n ctx = this.ctx,\n grid = this.options.grid;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let 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.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const ctx = this.ctx,\n _this$options9 = this.options,\n position = _this$options9.position,\n title = _this$options9.title,\n reverse = _this$options9.reverse;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let 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 const _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,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n 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 _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: chartArea => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: chartArea => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: chartArea => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const 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 get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const 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}\nfunction registerDefaults(item, scope, parentScope) {\n const 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(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\nclass Registry {\n constructor() {\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 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 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 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 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 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 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 getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n 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 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 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 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 _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const _meta$data2 = meta.data,\n points = _meta$data2 === void 0 ? [] : _meta$data2;\n const animationsDisabled = this.chart._animationsDisabled;\n let _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 const 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 const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const showLine = this.options.showLine;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const _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 const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const _this$options10 = this.options,\n spanGaps = _this$options10.spanGaps,\n segment = _this$options10.segment;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const 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 getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let 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 const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\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});\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function (members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\nfunction binarySearch(metaset, axis, value, intersect) {\n const controller = metaset.controller,\n data = metaset.data,\n _sorted = metaset._sorted;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const 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 const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const _metasets$i = metasets[i],\n index = _metasets$i.index,\n data = _metasets$i.data;\n const _binarySearch = binarySearch(metasets[i], axis, value, intersect),\n lo = _binarySearch.lo,\n hi = _binarySearch.hi;\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const 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 const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function (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,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const _element$getProps = element.getProps(['startAngle', 'endAngle'], useFinalPosition),\n startAngle = _element$getProps.startAngle,\n endAngle = _element$getProps.endAngle;\n const _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,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{\n element,\n datasetIndex,\n index\n }];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n 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 const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n 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,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach(meta => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let 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,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const stack = wrap.stack,\n pos = wrap.pos,\n stackWeight = wrap.stackWeight;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _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 return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const vBoxMaxWidth = params.vBoxMaxWidth,\n hBoxMaxHeight = params.hBoxMaxHeight;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const fullSize = layout.box.fullSize;\n const stack = stacks[layout.stack];\n const 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 const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n 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 const pos = layout.pos,\n box = layout.box;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const 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 const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const 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 const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const 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 const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(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 const refitBoxes = [];\n let 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 const _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 const userPadding = params.padding;\n let x = chartArea.x,\n y = chartArea.y;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const 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 const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n 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(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const 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, layout => {\n const 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};\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {}\n}\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\nconst EXPANDO_KEY = '$chartjs';\nconst 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};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const 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 const 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 const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst 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 const type = EVENT_TYPES[event.type] || event.type;\n const _getRelativePosition = getRelativePosition(event, chart),\n x = _getRelativePosition.x,\n y = _getRelativePosition.y;\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\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 const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((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 const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const 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 const canvas = chart.canvas;\n const proxy = throttled(event => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, args => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const 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 releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(prop => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach(key => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\nclass PluginService {\n constructor() {\n this._init = [];\n }\n 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 const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const 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 _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n 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, _ref4, options, all) {\n let plugins = _ref4.plugins,\n localIds = _ref4.localIds;\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, _ref5, opts, context) {\n let plugin = _ref5.plugin,\n local = _ref5.local;\n const keys = config.pluginScopeKeys(plugin);\n const 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 const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let 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') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{\n axis\n }, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{\n axis\n }, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const 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}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, () => [[`datasets.${datasetType}`, '']]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, () => [[`datasets.${datasetType}.transitions.${transition}`, `transitions.${transition}`], [`datasets.${datasetType}`, '']]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, () => [[`datasets.${datasetType}.elements.${elementType}`, `datasets.${datasetType}`, `elements.${elementType}`, '']]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, () => [[`plugins.${id}`, ...(plugin.additionalOptionScopes || [])]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const options = this.options,\n type = this.type;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const 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 chartOptionScopes() {\n const options = this.options,\n type = this.type;\n return [options, overrides[type] || {}, defaults.datasets[type] || {}, {\n type\n }, defaults, descriptors];\n }\n resolveNamedOptions(scopes, names, context) {\n let prefixes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [''];\n const result = {\n $shared: true\n };\n const _getResolver = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver.resolver,\n subPrefixes = _getResolver.subPrefixes;\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context) {\n let prefixes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [''];\n let descriptorDefaults = arguments.length > 3 ? arguments[3] : undefined;\n const _getResolver2 = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver2.resolver;\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value) && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const _descriptors2 = _descriptors(proxy),\n isScriptable = _descriptors2.isScriptable,\n isIndexable = _descriptors2.isIndexable;\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\nvar version = \"3.9.1\";\nconst 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 const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const 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}\nconst instances = {};\nconst getChart = key => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter(c => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const 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}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const 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 const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const 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(mode => this.update(mode), 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 get aspectRatio() {\n const _this$options11 = this.options,\n aspectRatio = _this$options11.aspectRatio,\n maintainAspectRatio = _this$options11.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 get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _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 clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const 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 ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map(id => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const 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, item => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const 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 let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, scale => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let 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 _removeUnreferencedMetasets() {\n const metasets = this._metasets,\n datasets = this.data.datasets;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const 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 const ControllerClass = registry.getController(type);\n const _defaults$datasets$ty = defaults.datasets[type],\n datasetElementType = _defaults$datasets$ty.datasetElementType,\n dataElementType = _defaults$datasets$ty.dataElementType;\n Object.assign(ControllerClass.prototype, {\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 _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const 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,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const _this$getDatasetMeta = this.getDatasetMeta(i),\n controller = _this$getDatasetMeta.controller;\n const 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, controller => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const _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 _updateScales() {\n each(this.scales, scale => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const _hiddenIndices = this._hiddenIndices;\n const changes = this._getUniformDataChanges() || [];\n for (const _ref6 of changes) {\n const method = _ref6.method;\n const start = _ref6.start;\n const count = _ref6.count;\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = idx => new Set(_dataChanges.filter(c => c[0] === idx).map((c, i) => i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map(c => c.split(',')).map(a => ({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, box => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n 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 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 draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const _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 const 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 _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n 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 isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).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 getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const 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\n });\n this.update(ctx => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let 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 destroy() {\n this.notifyPlugins('beforeDestroy');\n const 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 this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image() {\n return this.canvas.toDataURL(...arguments);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, type => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let 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 const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(_ref7 => {\n let datasetIndex = _ref7.datasetIndex,\n index = _ref7.index;\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const 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 _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = plugin => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const 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 _handleEvent(e, replay, inChartArea) {\n const _this$_active = this._active,\n lastActive = _this$_active === void 0 ? [] : _this$_active,\n options = this.options;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const 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 const 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 _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, chart => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: function () {\n registry.add(...arguments);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: function () {\n registry.remove(...arguments);\n invalidatePlugins();\n }\n }\n});\nfunction clipArc(ctx, element, endAngle) {\n const startAngle = element.startAngle,\n pixelMargin = element.pixelMargin,\n x = element.x,\n y = element.y,\n outerRadius = element.outerRadius,\n innerRadius = element.innerRadius;\n let angleMargin = pixelMargin / outerRadius;\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}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = val => {\n const 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}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const x = element.x,\n y = element.y,\n start = element.startAngle,\n pixelMargin = element.pixelMargin,\n innerR = element.innerRadius;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const _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 const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, startAngle + innerStart / innerRadius, true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const x = element.x,\n y = element.y,\n startAngle = element.startAngle,\n pixelMargin = element.pixelMargin,\n fullCircles = element.fullCircles;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const options = element.options;\n const borderWidth = options.borderWidth,\n borderJoinStyle = options.borderJoinStyle;\n const 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 if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const _getAngleFromPoint2 = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n }),\n angle = _getAngleFromPoint2.angle,\n distance = _getAngleFromPoint2.distance;\n const _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 const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const _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 const _this$options12 = this.options,\n offset = _this$options12.offset,\n spacing = _this$options12.spacing;\n const halfAngle = (startAngle + endAngle) / 2;\n const 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 tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const options = this.options,\n circumference = this.circumference;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const 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 let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\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 let 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 let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const count = points.length;\n const _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 const segmentStart = segment.start,\n segmentEnd = segment.end;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const points = line.points,\n options = line.options;\n const _pathVars = pathVars(points, segment, params),\n count = _pathVars.count,\n start = _pathVars.start,\n loop = _pathVars.loop,\n ilen = _pathVars.ilen;\n const lineMethod = getLineMethod(options);\n let _ref8 = params || {},\n _ref8$move = _ref8.move,\n move = _ref8$move === void 0 ? true : _ref8$move,\n reverse = _ref8.reverse;\n let 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 const points = line.points;\n const _pathVars2 = pathVars(points, segment, params),\n count = _pathVars2.count,\n start = _pathVars2.start,\n ilen = _pathVars2.ilen;\n const _ref9 = params || {},\n _ref9$move = _ref9.move,\n move = _ref9$move === void 0 ? true : _ref9$move,\n reverse = _ref9.reverse;\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = index => (start + (reverse ? ilen - index : index)) % count;\n const 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 const x = point.x;\n const y = point.y;\n const 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 const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const 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 let 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 const segments = line.segments,\n options = line.options;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst 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}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const _segments$i = segments[i],\n start = _segments$i.start,\n end = _segments$i.end;\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const 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 pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const 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}\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: name => name !== 'borderDash' && name !== 'fill'\n};\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const _el$getProps = el.getProps([axis], useFinalPosition),\n value = _el$getProps[axis];\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const _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 inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const _this$getProps5 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps5.x,\n y = _this$getProps5.y;\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const 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 getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nfunction getBarBounds(bar, useFinalPosition) {\n const _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 let 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,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const 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 const _bar$getProps2 = bar.getProps(['enableBorderRadius']),\n enableBorderRadius = _bar$getProps2.enableBorderRadius;\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const 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 const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const 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\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 const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const 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 let refRect = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const 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}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const inflateAmount = this.inflateAmount,\n _this$options13 = this.options,\n borderColor = _this$options13.borderColor,\n backgroundColor = _this$options13.backgroundColor;\n const _boundingRects = boundingRects(this),\n inner = _boundingRects.inner,\n outer = _boundingRects.outer;\n const 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 inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const _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 getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nvar elements = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArcElement: ArcElement,\n LineElement: LineElement,\n PointElement: PointElement,\n BarElement: BarElement\n});\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const 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 const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const _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 let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const 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 const 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 const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const 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 const 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(dataset => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const iScale = meta.iScale;\n const _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,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const _data = dataset._data,\n indexAxis = dataset.indexAxis;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const 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 let _getStartAndCountOfVi3 = getStartAndCountOfVisiblePointsSimplified(meta, data),\n start = _getStartAndCountOfVi3.start,\n count = _getStartAndCountOfVi3.count;\n const 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 () {\n return this._decimated;\n },\n set: function (d) {\n this._data = d;\n }\n });\n }\n let 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 '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let start = segment.start,\n end = segment.end;\n end = _findSegmentEnd(start, end, points);\n const 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 const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const _ref10 = boundary || {},\n _ref10$x = _ref10.x,\n x = _ref10$x === void 0 ? null : _ref10$x,\n _ref10$y = _ref10.y,\n y = _ref10$y === void 0 ? null : _ref10$y;\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(_ref11 => {\n let start = _ref11.start,\n end = _ref11.end;\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (; end > start; end--) {\n const 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 let points = [];\n let _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,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let 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 const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let 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 let 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 let 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 const options = line.options;\n const fillOption = options.fill;\n let 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 const scale = source.scale,\n index = source.index,\n line = source.line;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const 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 const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const _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(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const 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,\n last,\n point\n };\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const 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 interpolate(point) {\n const x = this.x,\n y = this.y,\n radius = this.radius;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction _getTarget(source) {\n const 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 const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const _source$scale = source.scale,\n scale = _source$scale === void 0 ? {} : _source$scale,\n fill = source.fill;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const 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 const scale = source.scale,\n fill = source.fill;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const 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 (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const line = source.line,\n scale = source.scale,\n axis = source.axis;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const _ref12 = fillOption || {},\n _ref12$above = _ref12.above,\n above = _ref12$above === void 0 ? color : _ref12$above,\n _ref12$below = _ref12.below,\n below = _ref12$below === void 0 ? color : _ref12$below;\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n above = cfg.above,\n below = cfg.below,\n area = cfg.area,\n scale = cfg.scale;\n const 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,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const segments = target.segments,\n points = target.points;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const start = segment.start,\n end = segment.end;\n const firstPoint = points[start];\n const 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 ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const line = cfg.line,\n target = cfg.target,\n property = cfg.property,\n color = cfg.color,\n scale = cfg.scale;\n const segments = _segments(line, target, property);\n for (const _ref13 of segments) {\n const src = _ref13.source;\n const tgt = _ref13.target;\n const start = _ref13.start;\n const end = _ref13.end;\n const _src$style = src.style,\n _src$style2 = _src$style === void 0 ? {} : _src$style,\n _src$style2$backgroun = _src$style2.backgroundColor,\n backgroundColor = _src$style2$backgroun === void 0 ? color : _src$style2$backgroun;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const 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}\nfunction clipBounds(ctx, scale, bounds) {\n const _scale$chart$chartAre = scale.chart.chartArea,\n top = _scale$chart$chartAre.top,\n bottom = _scale$chart$chartAre.bottom;\n const _ref14 = bounds || {},\n property = _ref14.property,\n start = _ref14.start,\n end = _ref14.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 const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let 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,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n 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(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const 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(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const 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};\nconst getBoxSize = (labelOpts, fontSize) => {\n let _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,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n 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 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 buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter(item => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const options = this.options,\n ctx = this.ctx;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const _getBoxSize = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize.boxWidth,\n itemHeight = _getBoxSize.itemHeight;\n let 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, fontSize, 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 _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const ctx = this.ctx,\n maxWidth = this.maxWidth,\n padding = this.options.labels.padding;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const 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,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const ctx = this.ctx,\n maxHeight = this.maxHeight,\n padding = this.options.labels.padding;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\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,\n top: currentColHeight,\n 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 adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const hitboxes = this.legendHitBoxes,\n _this$options14 = this.options,\n align = _this$options14.align,\n padding = _this$options14.labels.padding,\n rtl = _this$options14.rtl;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\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 } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const opts = this.options,\n columnSizes = this.columnSizes,\n lineWidths = this.lineWidths,\n ctx = this.ctx;\n const align = opts.align,\n labelOpts = opts.labels;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const fontColor = labelOpts.color,\n padding = labelOpts.padding;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let 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 const _getBoxSize2 = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize2.boxWidth,\n boxHeight = _getBoxSize2.boxHeight,\n itemHeight = _getBoxSize2.itemHeight;\n const drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const 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 const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\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 const fillText = function (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 const isHorizontal = this.isHorizontal();\n const 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 const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const 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 _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let 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 handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const 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}\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(chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n 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(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const 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: ctx => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const _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 return chart._getSortedDatasetMetas().map(meta => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const 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: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: ctx => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: name => !name.startsWith('on'),\n labels: {\n _scriptable: name => !['generateLabels', 'filter', 'sort'].includes(name)\n }\n }\n};\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const 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 const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const 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 isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const top = this.top,\n left = this.left,\n bottom = this.bottom,\n right = this.right,\n options = this.options;\n const align = options.align;\n let rotation = 0;\n let 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,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const _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,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n 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(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const 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};\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const 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};\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const 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(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n 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 const element = item.element,\n datasetIndex = item.datasetIndex,\n index = item.index;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const _controller$getLabelA = controller.getLabelAndValue(index),\n label = _controller$getLabelA.label,\n value = _controller$getLabelA.value;\n return {\n chart,\n 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,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const body = tooltip.body,\n footer = tooltip.footer,\n title = tooltip.title;\n const boxWidth = options.boxWidth,\n boxHeight = options.boxHeight;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 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 const 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 let widthPadding = 0;\n const maxLineWidth = function (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, 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,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const 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 const x = size.x,\n width = size.width;\n const 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 const x = size.x,\n width = size.width;\n const chartWidth = chart.width,\n _chart$chartArea = chart.chartArea,\n left = _chart$chartArea.left,\n right = _chart$chartArea.right;\n let 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 const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let 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 let 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 const caretSize = options.caretSize,\n caretPadding = options.caretPadding,\n cornerRadius = options.cornerRadius;\n const xAlign = alignment.xAlign,\n yAlign = alignment.yAlign;\n const paddingAndSize = caretSize + caretPadding;\n const _toTRBLCorners = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners.topLeft,\n topRight = _toTRBLCorners.topRight,\n bottomLeft = _toTRBLCorners.bottomLeft,\n bottomRight = _toTRBLCorners.bottomRight;\n let x = alignX(size, xAlign);\n const 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 const 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,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const callbacks = options.callbacks;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const callbacks = options.callbacks;\n const bodyItems = [];\n each(tooltipItems, context => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const callbacks = options.callbacks;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let 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((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, context => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const 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 const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const 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\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const 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 getCaretPosition(tooltipPoint, size, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const caretSize = options.caretSize,\n cornerRadius = options.cornerRadius;\n const _toTRBLCorners2 = toTRBLCorners(cornerRadius),\n topLeft = _toTRBLCorners2.topLeft,\n topRight = _toTRBLCorners2.topRight,\n bottomLeft = _toTRBLCorners2.bottomLeft,\n bottomRight = _toTRBLCorners2.bottomRight;\n const ptX = tooltipPoint.x,\n ptY = tooltipPoint.y;\n const width = size.width,\n height = size.height;\n let 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,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const 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 _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const boxHeight = options.boxHeight,\n boxWidth = options.boxWidth,\n boxPadding = options.boxPadding;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const 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(...Object.values(labelColors.borderWidth)) : labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\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 drawBody(pt, ctx, options) {\n const body = this.body;\n const bodySpacing = options.bodySpacing,\n bodyAlign = options.bodyAlign,\n displayColors = options.displayColors,\n boxHeight = options.boxHeight,\n boxWidth = options.boxWidth,\n boxPadding = options.boxPadding;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function (line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let 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 drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const 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 drawBackground(pt, ctx, tooltipSize, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const x = pt.x,\n y = pt.y;\n const width = tooltipSize.width,\n height = tooltipSize.height;\n const _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 _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const 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 _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const 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 getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(_ref15 => {\n let datasetIndex = _ref15.datasetIndex,\n index = _ref15.index;\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const 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 handleEvent(e, replay) {\n let inChartArea = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const 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 _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const caretX = this.caretX,\n caretY = this.caretY,\n options = this.options;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const 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: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\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: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const 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(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const 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() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: name => name !== 'filter' && name !== 'itemSort' && name !== 'external',\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 Decimation: plugin_decimation,\n Filler: index,\n Legend: plugin_legend,\n SubTitle: plugin_subtitle,\n Title: plugin_title,\n Tooltip: plugin_tooltip\n});\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n 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 const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const _ref16 of added) {\n const index = _ref16.index;\n const label = _ref16.label;\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const 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 determineDataLimits() {\n const _this$getUserBounds2 = this.getUserBounds(),\n minDefined = _this$getUserBounds2.minDefined,\n maxDefined = _this$getUserBounds2.maxDefined;\n let _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 buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let 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 (let value = min; value <= max; value++) {\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n 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 getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const 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 const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const rmin = dataRange.min,\n rmax = dataRange.max;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let 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 const 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 let 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, _ref17) {\n let horizontal = _ref17.horizontal,\n minRotation = _ref17.minRotation;\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n 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 handleTickRangeOptions() {\n const beginAtZero = this.options.beginAtZero;\n const _this$getUserBounds3 = this.getUserBounds(),\n minDefined = _this$getUserBounds3.minDefined,\n maxDefined = _this$getUserBounds3.maxDefined;\n let min = this.min,\n max = this.max;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const 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 let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let maxTicksLimit = tickOpts.maxTicksLimit,\n stepSize = tickOpts.stepSize;\n let 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.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${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 computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n 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 const dataRange = this._range || this;\n const 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 configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const 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 getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const _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 computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, Math.floor(log10(tickVal)));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({\n value: tickVal,\n major: isMajor(tickVal)\n });\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || exp === endExp && significand < endSignificand);\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({\n value: lastTick,\n major: isMajor(tickVal)\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const 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 determineDataLimits() {\n const _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 this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const _this$getUserBounds4 = this.getUserBounds(),\n minDefined = _this$getUserBounds4.minDefined,\n maxDefined = _this$getUserBounds4.maxDefined;\n let min = this.min;\n let max = this.max;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const 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 getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n 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 getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const 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 const 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 const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const 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 const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let 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 const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n 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 const ctx = scale.ctx,\n pointLabels = scale.options.pointLabels;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const _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 const backdropColor = optsAtIndex.backdropColor;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\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 const ctx = scale.ctx;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let 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) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const 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(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\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,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const 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 determineDataLimits() {\n const _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 computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n }).filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const 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 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 getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const 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 getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter) {\n let additionalAngle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n const 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\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const _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,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const _this$options15 = this.options,\n backgroundColor = _this$options15.backgroundColor,\n circular = _this$options15.grid.circular;\n if (backgroundColor) {\n const 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 drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const angleLines = opts.angleLines,\n grid = opts.grid;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const 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 drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let 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((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.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 const 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 drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(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};\nconst 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};\nconst UNITS = 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 const adapter = scale._adapter;\n const _scale$_parseOpts = scale._parseOpts,\n parser = _scale$_parseOpts.parser,\n round = _scale$_parseOpts.round,\n isoWeekday = _scale$_parseOpts.isoWeekday;\n let 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 const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const 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 (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const 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 (let 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 const _lookup2 = _lookup(timestamps, time),\n lo = _lookup2.lo,\n hi = _lookup2.hi;\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let 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 const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const 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 super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let _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 _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const 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 const min = this.min;\n const max = this.max;\n const 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 afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let 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 const 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,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let 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 const 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((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const 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 _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let 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 getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const 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 getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const 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 normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let 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 const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const min = this.min,\n max = this.max;\n const items = [];\n const table = [];\n let 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 _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const 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 getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\nvar scales = /*#__PURE__*/Object.freeze({\n __proto__: null,\n CategoryScale: CategoryScale,\n LinearScale: LinearScale,\n LogarithmicScale: LogarithmicScale,\n RadialLinearScale: RadialLinearScale,\n TimeScale: TimeScale,\n TimeSeriesScale: TimeSeriesScale\n});\nconst registerables = [controllers, elements, plugins, scales];\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };","export find_parent_element = (element, nodeName = 'TR') ->\n parent = element\n parent = parent.parentElement while parent.nodeName != nodeName\n parent","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n CLOSING: 'mdc-snackbar--closing',\n OPEN: 'mdc-snackbar--open',\n OPENING: 'mdc-snackbar--opening'\n};\nvar strings = {\n ACTION_SELECTOR: '.mdc-snackbar__action',\n ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text',\n CLOSED_EVENT: 'MDCSnackbar:closed',\n CLOSING_EVENT: 'MDCSnackbar:closing',\n DISMISS_SELECTOR: '.mdc-snackbar__dismiss',\n LABEL_SELECTOR: '.mdc-snackbar__label',\n OPENED_EVENT: 'MDCSnackbar:opened',\n OPENING_EVENT: 'MDCSnackbar:opening',\n REASON_ACTION: 'action',\n REASON_DISMISS: 'dismiss',\n SURFACE_SELECTOR: '.mdc-snackbar__surface'\n};\nvar numbers = {\n DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,\n INDETERMINATE: -1,\n MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,\n MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,\n // These variables need to be kept in sync with the values in _variables.scss.\n SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,\n SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,\n /**\n * Number of milliseconds to wait between temporarily clearing the label text\n * in the DOM and subsequently restoring it. This is necessary to force IE 11\n * to pick up the `aria-live` content change and announce it to the user.\n */\n ARIA_LIVE_DELAY_MS: 1000\n};\nexport { cssClasses, strings, numbers };","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nvar OPENING = cssClasses.OPENING,\n OPEN = cssClasses.OPEN,\n CLOSING = cssClasses.CLOSING;\nvar REASON_ACTION = strings.REASON_ACTION,\n REASON_DISMISS = strings.REASON_DISMISS;\nvar MDCSnackbarFoundation = /** @class */function (_super) {\n __extends(MDCSnackbarFoundation, _super);\n function MDCSnackbarFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCSnackbarFoundation.defaultAdapter), adapter)) || this;\n _this.opened = false;\n _this.animationFrame = 0;\n _this.animationTimer = 0;\n _this.autoDismissTimer = 0;\n _this.autoDismissTimeoutMs = numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;\n _this.closeOnEscape = true;\n return _this;\n }\n Object.defineProperty(MDCSnackbarFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addClass: function () {\n return undefined;\n },\n announce: function () {\n return undefined;\n },\n notifyClosed: function () {\n return undefined;\n },\n notifyClosing: function () {\n return undefined;\n },\n notifyOpened: function () {\n return undefined;\n },\n notifyOpening: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n }\n };\n },\n enumerable: false,\n configurable: true\n });\n MDCSnackbarFoundation.prototype.destroy = function () {\n this.clearAutoDismissTimer();\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = 0;\n clearTimeout(this.animationTimer);\n this.animationTimer = 0;\n this.adapter.removeClass(OPENING);\n this.adapter.removeClass(OPEN);\n this.adapter.removeClass(CLOSING);\n };\n MDCSnackbarFoundation.prototype.open = function () {\n var _this = this;\n this.clearAutoDismissTimer();\n this.opened = true;\n this.adapter.notifyOpening();\n this.adapter.removeClass(CLOSING);\n this.adapter.addClass(OPENING);\n this.adapter.announce();\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame(function () {\n _this.adapter.addClass(OPEN);\n _this.animationTimer = setTimeout(function () {\n var timeoutMs = _this.getTimeoutMs();\n _this.handleAnimationTimerEnd();\n _this.adapter.notifyOpened();\n if (timeoutMs !== numbers.INDETERMINATE) {\n _this.autoDismissTimer = setTimeout(function () {\n _this.close(REASON_DISMISS);\n }, timeoutMs);\n }\n }, numbers.SNACKBAR_ANIMATION_OPEN_TIME_MS);\n });\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n MDCSnackbarFoundation.prototype.close = function (reason) {\n var _this = this;\n if (reason === void 0) {\n reason = '';\n }\n if (!this.opened) {\n // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed\n return;\n }\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = 0;\n this.clearAutoDismissTimer();\n this.opened = false;\n this.adapter.notifyClosing(reason);\n this.adapter.addClass(cssClasses.CLOSING);\n this.adapter.removeClass(cssClasses.OPEN);\n this.adapter.removeClass(cssClasses.OPENING);\n clearTimeout(this.animationTimer);\n this.animationTimer = setTimeout(function () {\n _this.handleAnimationTimerEnd();\n _this.adapter.notifyClosed(reason);\n }, numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS);\n };\n MDCSnackbarFoundation.prototype.isOpen = function () {\n return this.opened;\n };\n MDCSnackbarFoundation.prototype.getTimeoutMs = function () {\n return this.autoDismissTimeoutMs;\n };\n MDCSnackbarFoundation.prototype.setTimeoutMs = function (timeoutMs) {\n // Use shorter variable names to make the code more readable\n var minValue = numbers.MIN_AUTO_DISMISS_TIMEOUT_MS;\n var maxValue = numbers.MAX_AUTO_DISMISS_TIMEOUT_MS;\n var indeterminateValue = numbers.INDETERMINATE;\n if (timeoutMs === numbers.INDETERMINATE || timeoutMs <= maxValue && timeoutMs >= minValue) {\n this.autoDismissTimeoutMs = timeoutMs;\n } else {\n throw new Error(\"\\n timeoutMs must be an integer in the range \" + minValue + \"\\u2013\" + maxValue + \"\\n (or \" + indeterminateValue + \" to disable), but got '\" + timeoutMs + \"'\");\n }\n };\n MDCSnackbarFoundation.prototype.getCloseOnEscape = function () {\n return this.closeOnEscape;\n };\n MDCSnackbarFoundation.prototype.setCloseOnEscape = function (closeOnEscape) {\n this.closeOnEscape = closeOnEscape;\n };\n MDCSnackbarFoundation.prototype.handleKeyDown = function (evt) {\n var isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscapeKey && this.getCloseOnEscape()) {\n this.close(REASON_DISMISS);\n }\n };\n MDCSnackbarFoundation.prototype.handleActionButtonClick = function (_evt) {\n this.close(REASON_ACTION);\n };\n MDCSnackbarFoundation.prototype.handleActionIconClick = function (_evt) {\n this.close(REASON_DISMISS);\n };\n MDCSnackbarFoundation.prototype.clearAutoDismissTimer = function () {\n clearTimeout(this.autoDismissTimer);\n this.autoDismissTimer = 0;\n };\n MDCSnackbarFoundation.prototype.handleAnimationTimerEnd = function () {\n this.animationTimer = 0;\n this.adapter.removeClass(cssClasses.OPENING);\n this.adapter.removeClass(cssClasses.CLOSING);\n };\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n MDCSnackbarFoundation.prototype.runNextAnimationFrame = function (callback) {\n var _this = this;\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = requestAnimationFrame(function () {\n _this.animationFrame = 0;\n clearTimeout(_this.animationTimer);\n _this.animationTimer = setTimeout(callback, 0);\n });\n };\n return MDCSnackbarFoundation;\n}(MDCFoundation);\nexport { MDCSnackbarFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSnackbarFoundation;","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { numbers, strings } from './constants';\nvar ARIA_LIVE_DELAY_MS = numbers.ARIA_LIVE_DELAY_MS;\nvar ARIA_LIVE_LABEL_TEXT_ATTR = strings.ARIA_LIVE_LABEL_TEXT_ATTR;\nfunction announce(ariaEl, labelEl) {\n if (labelEl === void 0) {\n labelEl = ariaEl;\n }\n var priority = ariaEl.getAttribute('aria-live');\n // Trim text to ignore ` ` (see below).\n // textContent is only null if the node is a document, DOCTYPE, or notation.\n var labelText = labelEl.textContent.trim();\n if (!labelText || !priority) {\n return;\n }\n // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n ariaEl.setAttribute('aria-live', 'off');\n // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.\n // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars\n // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.\n // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,\n // so screen readers won't announce the second message unless we first clear `textContent`.\n //\n // We have to clear the label text two different ways to make it work in all browsers and screen readers:\n //\n // 1. `textContent = ''` is required for IE11 + JAWS\n // 2. `innerHTML = ' '` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `` visually hides the space character so that it doesn't cause jank when added/removed.\n // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change.\n //\n // This technique has been tested in:\n //\n // * JAWS 2019:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * NVDA 2018:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * ChromeVox 53\n labelEl.textContent = '';\n // For the second case, assigning a string directly to innerHTML results in a\n // Trusted Types violation. Work around that by using document.createElement.\n var span = document.createElement('span');\n span.setAttribute('style', 'display: inline-block; width: 0; height: 1px;');\n span.textContent = '\\u00a0'; // Equivalent to  \n labelEl.appendChild(span);\n // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element.\n // CSS generated content is normally announced by screen readers\n // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/);\n // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers.\n labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);\n setTimeout(function () {\n // Allow screen readers to announce changes to the DOM again.\n ariaEl.setAttribute('aria-live', priority);\n // Remove the message from the ::before pseudo-element.\n labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR);\n // Restore the original label text, which will be announced by screen readers.\n labelEl.textContent = labelText;\n }, ARIA_LIVE_DELAY_MS);\n}\nexport { announce };","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { closest } from '@material/dom/ponyfill';\nimport { strings } from './constants';\nimport { MDCSnackbarFoundation } from './foundation';\nimport * as util from './util';\nvar SURFACE_SELECTOR = strings.SURFACE_SELECTOR,\n LABEL_SELECTOR = strings.LABEL_SELECTOR,\n ACTION_SELECTOR = strings.ACTION_SELECTOR,\n DISMISS_SELECTOR = strings.DISMISS_SELECTOR,\n OPENING_EVENT = strings.OPENING_EVENT,\n OPENED_EVENT = strings.OPENED_EVENT,\n CLOSING_EVENT = strings.CLOSING_EVENT,\n CLOSED_EVENT = strings.CLOSED_EVENT;\nvar MDCSnackbar = /** @class */function (_super) {\n __extends(MDCSnackbar, _super);\n function MDCSnackbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSnackbar.attachTo = function (root) {\n return new MDCSnackbar(root);\n };\n MDCSnackbar.prototype.initialize = function (announcerFactory) {\n if (announcerFactory === void 0) {\n announcerFactory = function () {\n return util.announce;\n };\n }\n this.announce = announcerFactory();\n };\n MDCSnackbar.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.surfaceEl = this.root.querySelector(SURFACE_SELECTOR);\n this.labelEl = this.root.querySelector(LABEL_SELECTOR);\n this.actionEl = this.root.querySelector(ACTION_SELECTOR);\n this.handleKeyDown = function (evt) {\n _this.foundation.handleKeyDown(evt);\n };\n this.handleSurfaceClick = function (evt) {\n var target = evt.target;\n if (_this.isActionButton(target)) {\n _this.foundation.handleActionButtonClick(evt);\n } else if (_this.isActionIcon(target)) {\n _this.foundation.handleActionIconClick(evt);\n }\n };\n this.registerKeyDownHandler(this.handleKeyDown);\n this.registerSurfaceClickHandler(this.handleSurfaceClick);\n };\n MDCSnackbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.deregisterKeyDownHandler(this.handleKeyDown);\n this.deregisterSurfaceClickHandler(this.handleSurfaceClick);\n };\n MDCSnackbar.prototype.open = function () {\n this.foundation.open();\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n MDCSnackbar.prototype.close = function (reason) {\n if (reason === void 0) {\n reason = '';\n }\n this.foundation.close(reason);\n };\n MDCSnackbar.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function (className) {\n _this.root.classList.add(className);\n },\n announce: function () {\n _this.announce(_this.labelEl);\n },\n notifyClosed: function (reason) {\n return _this.emit(CLOSED_EVENT, reason ? {\n reason: reason\n } : {});\n },\n notifyClosing: function (reason) {\n return _this.emit(CLOSING_EVENT, reason ? {\n reason: reason\n } : {});\n },\n notifyOpened: function () {\n return _this.emit(OPENED_EVENT, {});\n },\n notifyOpening: function () {\n return _this.emit(OPENING_EVENT, {});\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n }\n };\n return new MDCSnackbarFoundation(adapter);\n };\n Object.defineProperty(MDCSnackbar.prototype, \"timeoutMs\", {\n get: function () {\n return this.foundation.getTimeoutMs();\n },\n set: function (timeoutMs) {\n this.foundation.setTimeoutMs(timeoutMs);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"closeOnEscape\", {\n get: function () {\n return this.foundation.getCloseOnEscape();\n },\n set: function (closeOnEscape) {\n this.foundation.setCloseOnEscape(closeOnEscape);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"isOpen\", {\n get: function () {\n return this.foundation.isOpen();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"labelText\", {\n get: function () {\n // This property only returns null if the node is a document, DOCTYPE,\n // or notation. On Element nodes, it always returns a string.\n return this.labelEl.textContent;\n },\n set: function (labelText) {\n this.labelEl.textContent = labelText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"actionButtonText\", {\n get: function () {\n return this.actionEl.textContent;\n },\n set: function (actionButtonText) {\n this.actionEl.textContent = actionButtonText;\n },\n enumerable: false,\n configurable: true\n });\n MDCSnackbar.prototype.registerKeyDownHandler = function (handler) {\n this.listen('keydown', handler);\n };\n MDCSnackbar.prototype.deregisterKeyDownHandler = function (handler) {\n this.unlisten('keydown', handler);\n };\n MDCSnackbar.prototype.registerSurfaceClickHandler = function (handler) {\n this.surfaceEl.addEventListener('click', handler);\n };\n MDCSnackbar.prototype.deregisterSurfaceClickHandler = function (handler) {\n this.surfaceEl.removeEventListener('click', handler);\n };\n MDCSnackbar.prototype.isActionButton = function (target) {\n return Boolean(closest(target, ACTION_SELECTOR));\n };\n MDCSnackbar.prototype.isActionIcon = function (target) {\n return Boolean(closest(target, DISMISS_SELECTOR));\n };\n return MDCSnackbar;\n}(MDCComponent);\nexport { MDCSnackbar };","import {element_with_class, element_with_content} from 'components/common_elements'\nimport {MDCSnackbar} from '@material/snackbar'\n\nexport class FlashMessage\n\n @error: (message) -> @addFlashMessage(message, 'flash-error')\n @success: (message) -> @addFlashMessage(message, 'flash-success')\n\n @addFlashMessage: (message, clazz) ->\n @removeFlashMessage()\n div = @buildFlashMessage(message, clazz)\n document.body.append div\n @prepareFlashMessage()\n\n @prepareFlashMessage: ->\n div = document.querySelector('.flash-message')\n if div\n snackbar = new MDCSnackbar(div)\n snackbar.open()\n\n @buildFlashMessage: (message, clazz) ->\n div = element_with_class('div', 'mdc-snackbar', clazz, 'flash-message')\n surface = element_with_class('div', 'mdc-snackbar__surface')\n label = element_with_content('div', message, 'mdc-snackbar__label')\n label.setAttribute('role', 'status')\n label.setAttribute('aria-live', 'polite')\n surface.append label\n div.append surface\n div\n\n @removeFlashMessage: ->\n existing = document.querySelector('.flash-message')\n existing.remove() if existing\n\nFlashMessage.prepareFlashMessage()","export class User\n\n @isAdmin: -> document.body.dataset.admin != undefined\n @id: -> parseInt(document.body.dataset.uid)","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport var cssClasses = {\n LABEL_FLOAT_ABOVE: 'mdc-floating-label--float-above',\n LABEL_REQUIRED: 'mdc-floating-label--required',\n LABEL_SHAKE: 'mdc-floating-label--shake',\n ROOT: 'mdc-floating-label'\n};","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses } from './constants';\nvar MDCFloatingLabelFoundation = /** @class */function (_super) {\n __extends(MDCFloatingLabelFoundation, _super);\n function MDCFloatingLabelFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCFloatingLabelFoundation.defaultAdapter), adapter)) || this;\n _this.shakeAnimationEndHandler = function () {\n _this.handleShakeAnimationEnd();\n };\n return _this;\n }\n Object.defineProperty(MDCFloatingLabelFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCFloatingLabelFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCFloatingLabelAdapter} for typing information on parameters and return types.\n */\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n getWidth: function () {\n return 0;\n },\n registerInteractionHandler: function () {\n return undefined;\n },\n deregisterInteractionHandler: function () {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n\n enumerable: false,\n configurable: true\n });\n MDCFloatingLabelFoundation.prototype.init = function () {\n this.adapter.registerInteractionHandler('animationend', this.shakeAnimationEndHandler);\n };\n MDCFloatingLabelFoundation.prototype.destroy = function () {\n this.adapter.deregisterInteractionHandler('animationend', this.shakeAnimationEndHandler);\n };\n /**\n * Returns the width of the label element.\n */\n MDCFloatingLabelFoundation.prototype.getWidth = function () {\n return this.adapter.getWidth();\n };\n /**\n * Styles the label to produce a shake animation to indicate an error.\n * @param shouldShake If true, adds the shake CSS class; otherwise, removes shake class.\n */\n MDCFloatingLabelFoundation.prototype.shake = function (shouldShake) {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n if (shouldShake) {\n this.adapter.addClass(LABEL_SHAKE);\n } else {\n this.adapter.removeClass(LABEL_SHAKE);\n }\n };\n /**\n * Styles the label to float or dock.\n * @param shouldFloat If true, adds the float CSS class; otherwise, removes float and shake classes to dock the label.\n */\n MDCFloatingLabelFoundation.prototype.float = function (shouldFloat) {\n var _a = MDCFloatingLabelFoundation.cssClasses,\n LABEL_FLOAT_ABOVE = _a.LABEL_FLOAT_ABOVE,\n LABEL_SHAKE = _a.LABEL_SHAKE;\n if (shouldFloat) {\n this.adapter.addClass(LABEL_FLOAT_ABOVE);\n } else {\n this.adapter.removeClass(LABEL_FLOAT_ABOVE);\n this.adapter.removeClass(LABEL_SHAKE);\n }\n };\n /**\n * Styles the label as required.\n * @param isRequired If true, adds an asterisk to the label, indicating that it is required.\n */\n MDCFloatingLabelFoundation.prototype.setRequired = function (isRequired) {\n var LABEL_REQUIRED = MDCFloatingLabelFoundation.cssClasses.LABEL_REQUIRED;\n if (isRequired) {\n this.adapter.addClass(LABEL_REQUIRED);\n } else {\n this.adapter.removeClass(LABEL_REQUIRED);\n }\n };\n MDCFloatingLabelFoundation.prototype.handleShakeAnimationEnd = function () {\n var LABEL_SHAKE = MDCFloatingLabelFoundation.cssClasses.LABEL_SHAKE;\n this.adapter.removeClass(LABEL_SHAKE);\n };\n return MDCFloatingLabelFoundation;\n}(MDCFoundation);\nexport { MDCFloatingLabelFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCFloatingLabelFoundation;","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { estimateScrollWidth } from '@material/dom/ponyfill';\nimport { MDCFloatingLabelFoundation } from './foundation';\nvar MDCFloatingLabel = /** @class */function (_super) {\n __extends(MDCFloatingLabel, _super);\n function MDCFloatingLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCFloatingLabel.attachTo = function (root) {\n return new MDCFloatingLabel(root);\n };\n /**\n * Styles the label to produce the label shake for errors.\n * @param shouldShake If true, shakes the label by adding a CSS class; otherwise, stops shaking by removing the class.\n */\n MDCFloatingLabel.prototype.shake = function (shouldShake) {\n this.foundation.shake(shouldShake);\n };\n /**\n * Styles the label to float/dock.\n * @param shouldFloat If true, floats the label by adding a CSS class; otherwise, docks it by removing the class.\n */\n MDCFloatingLabel.prototype.float = function (shouldFloat) {\n this.foundation.float(shouldFloat);\n };\n /**\n * Styles the label as required.\n * @param isRequired If true, adds an asterisk to the label, indicating that it is required.\n */\n MDCFloatingLabel.prototype.setRequired = function (isRequired) {\n this.foundation.setRequired(isRequired);\n };\n MDCFloatingLabel.prototype.getWidth = function () {\n return this.foundation.getWidth();\n };\n MDCFloatingLabel.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n },\n getWidth: function () {\n return estimateScrollWidth(_this.root);\n },\n registerInteractionHandler: function (evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterInteractionHandler: function (evtType, handler) {\n return _this.unlisten(evtType, handler);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCFloatingLabelFoundation(adapter);\n };\n return MDCFloatingLabel;\n}(MDCComponent);\nexport { MDCFloatingLabel };","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n LINE_RIPPLE_ACTIVE: 'mdc-line-ripple--active',\n LINE_RIPPLE_DEACTIVATING: 'mdc-line-ripple--deactivating'\n};\nexport { cssClasses };","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses } from './constants';\nvar MDCLineRippleFoundation = /** @class */function (_super) {\n __extends(MDCLineRippleFoundation, _super);\n function MDCLineRippleFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCLineRippleFoundation.defaultAdapter), adapter)) || this;\n _this.transitionEndHandler = function (evt) {\n _this.handleTransitionEnd(evt);\n };\n return _this;\n }\n Object.defineProperty(MDCLineRippleFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCLineRippleFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCLineRippleAdapter} for typing information on parameters and return types.\n */\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n hasClass: function () {\n return false;\n },\n setStyle: function () {\n return undefined;\n },\n registerEventHandler: function () {\n return undefined;\n },\n deregisterEventHandler: function () {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n\n enumerable: false,\n configurable: true\n });\n MDCLineRippleFoundation.prototype.init = function () {\n this.adapter.registerEventHandler('transitionend', this.transitionEndHandler);\n };\n MDCLineRippleFoundation.prototype.destroy = function () {\n this.adapter.deregisterEventHandler('transitionend', this.transitionEndHandler);\n };\n MDCLineRippleFoundation.prototype.activate = function () {\n this.adapter.removeClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n this.adapter.addClass(cssClasses.LINE_RIPPLE_ACTIVE);\n };\n MDCLineRippleFoundation.prototype.setRippleCenter = function (xCoordinate) {\n this.adapter.setStyle('transform-origin', xCoordinate + \"px center\");\n };\n MDCLineRippleFoundation.prototype.deactivate = function () {\n this.adapter.addClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n };\n MDCLineRippleFoundation.prototype.handleTransitionEnd = function (evt) {\n // Wait for the line ripple to be either transparent or opaque\n // before emitting the animation end event\n var isDeactivating = this.adapter.hasClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n if (evt.propertyName === 'opacity') {\n if (isDeactivating) {\n this.adapter.removeClass(cssClasses.LINE_RIPPLE_ACTIVE);\n this.adapter.removeClass(cssClasses.LINE_RIPPLE_DEACTIVATING);\n }\n }\n };\n return MDCLineRippleFoundation;\n}(MDCFoundation);\nexport { MDCLineRippleFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCLineRippleFoundation;","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { MDCLineRippleFoundation } from './foundation';\nvar MDCLineRipple = /** @class */function (_super) {\n __extends(MDCLineRipple, _super);\n function MDCLineRipple() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCLineRipple.attachTo = function (root) {\n return new MDCLineRipple(root);\n };\n /**\n * Activates the line ripple\n */\n MDCLineRipple.prototype.activate = function () {\n this.foundation.activate();\n };\n /**\n * Deactivates the line ripple\n */\n MDCLineRipple.prototype.deactivate = function () {\n this.foundation.deactivate();\n };\n /**\n * Sets the transform origin given a user's click location.\n * The `rippleCenter` is the x-coordinate of the middle of the ripple.\n */\n MDCLineRipple.prototype.setRippleCenter = function (xCoordinate) {\n this.foundation.setRippleCenter(xCoordinate);\n };\n MDCLineRipple.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n },\n hasClass: function (className) {\n return _this.root.classList.contains(className);\n },\n setStyle: function (propertyName, value) {\n return _this.root.style.setProperty(propertyName, value);\n },\n registerEventHandler: function (evtType, handler) {\n return _this.listen(evtType, handler);\n },\n deregisterEventHandler: function (evtType, handler) {\n return _this.unlisten(evtType, handler);\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCLineRippleFoundation(adapter);\n };\n return MDCLineRipple;\n}(MDCComponent);\nexport { MDCLineRipple };","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar strings = {\n NOTCH_ELEMENT_SELECTOR: '.mdc-notched-outline__notch'\n};\nvar numbers = {\n // This should stay in sync with $mdc-notched-outline-padding * 2.\n NOTCH_ELEMENT_PADDING: 8\n};\nvar cssClasses = {\n NO_LABEL: 'mdc-notched-outline--no-label',\n OUTLINE_NOTCHED: 'mdc-notched-outline--notched',\n OUTLINE_UPGRADED: 'mdc-notched-outline--upgraded'\n};\nexport { cssClasses, numbers, strings };","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nvar MDCNotchedOutlineFoundation = /** @class */function (_super) {\n __extends(MDCNotchedOutlineFoundation, _super);\n function MDCNotchedOutlineFoundation(adapter) {\n return _super.call(this, __assign(__assign({}, MDCNotchedOutlineFoundation.defaultAdapter), adapter)) || this;\n }\n Object.defineProperty(MDCNotchedOutlineFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCNotchedOutlineFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCNotchedOutlineFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCNotchedOutlineFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCNotchedOutlineAdapter} for typing information on parameters and return types.\n */\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n setNotchWidthProperty: function () {\n return undefined;\n },\n removeNotchWidthProperty: function () {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n\n enumerable: false,\n configurable: true\n });\n /**\n * Adds the outline notched selector and updates the notch width calculated based off of notchWidth.\n */\n MDCNotchedOutlineFoundation.prototype.notch = function (notchWidth) {\n var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;\n if (notchWidth > 0) {\n notchWidth += numbers.NOTCH_ELEMENT_PADDING; // Add padding from left/right.\n }\n\n this.adapter.setNotchWidthProperty(notchWidth);\n this.adapter.addClass(OUTLINE_NOTCHED);\n };\n /**\n * Removes notched outline selector to close the notch in the outline.\n */\n MDCNotchedOutlineFoundation.prototype.closeNotch = function () {\n var OUTLINE_NOTCHED = MDCNotchedOutlineFoundation.cssClasses.OUTLINE_NOTCHED;\n this.adapter.removeClass(OUTLINE_NOTCHED);\n this.adapter.removeNotchWidthProperty();\n };\n return MDCNotchedOutlineFoundation;\n}(MDCFoundation);\nexport { MDCNotchedOutlineFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCNotchedOutlineFoundation;","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { MDCFloatingLabelFoundation } from '@material/floating-label/foundation';\nimport { cssClasses, strings } from './constants';\nimport { MDCNotchedOutlineFoundation } from './foundation';\nvar MDCNotchedOutline = /** @class */function (_super) {\n __extends(MDCNotchedOutline, _super);\n function MDCNotchedOutline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCNotchedOutline.attachTo = function (root) {\n return new MDCNotchedOutline(root);\n };\n MDCNotchedOutline.prototype.initialSyncWithDOM = function () {\n this.notchElement = this.root.querySelector(strings.NOTCH_ELEMENT_SELECTOR);\n var label = this.root.querySelector('.' + MDCFloatingLabelFoundation.cssClasses.ROOT);\n if (label) {\n label.style.transitionDuration = '0s';\n this.root.classList.add(cssClasses.OUTLINE_UPGRADED);\n requestAnimationFrame(function () {\n label.style.transitionDuration = '';\n });\n } else {\n this.root.classList.add(cssClasses.NO_LABEL);\n }\n };\n /**\n * Updates classes and styles to open the notch to the specified width.\n * @param notchWidth The notch width in the outline.\n */\n MDCNotchedOutline.prototype.notch = function (notchWidth) {\n this.foundation.notch(notchWidth);\n };\n /**\n * Updates classes and styles to close the notch.\n */\n MDCNotchedOutline.prototype.closeNotch = function () {\n this.foundation.closeNotch();\n };\n MDCNotchedOutline.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n },\n setNotchWidthProperty: function (width) {\n _this.notchElement.style.setProperty('width', width + 'px');\n },\n removeNotchWidthProperty: function () {\n _this.notchElement.style.removeProperty('width');\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCNotchedOutlineFoundation(adapter);\n };\n return MDCNotchedOutline;\n}(MDCComponent);\nexport { MDCNotchedOutline };","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n ROOT: 'mdc-text-field-character-counter'\n};\nvar strings = {\n ROOT_SELECTOR: \".\" + cssClasses.ROOT\n};\nexport { strings, cssClasses };","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, strings } from './constants';\nvar MDCTextFieldCharacterCounterFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldCharacterCounterFoundation, _super);\n function MDCTextFieldCharacterCounterFoundation(adapter) {\n return _super.call(this, __assign(__assign({}, MDCTextFieldCharacterCounterFoundation.defaultAdapter), adapter)) || this;\n }\n Object.defineProperty(MDCTextFieldCharacterCounterFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldCharacterCounterFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldCharacterCounterFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldCharacterCounterAdapter} for typing information on parameters and return types.\n */\n get: function () {\n return {\n setContent: function () {\n return undefined;\n }\n };\n },\n enumerable: false,\n configurable: true\n });\n MDCTextFieldCharacterCounterFoundation.prototype.setCounterValue = function (currentLength, maxLength) {\n currentLength = Math.min(currentLength, maxLength);\n this.adapter.setContent(currentLength + \" / \" + maxLength);\n };\n return MDCTextFieldCharacterCounterFoundation;\n}(MDCFoundation);\nexport { MDCTextFieldCharacterCounterFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTextFieldCharacterCounterFoundation;","/**\n * @license\n * Copyright 2019 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { MDCTextFieldCharacterCounterFoundation } from './foundation';\nvar MDCTextFieldCharacterCounter = /** @class */function (_super) {\n __extends(MDCTextFieldCharacterCounter, _super);\n function MDCTextFieldCharacterCounter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTextFieldCharacterCounter.attachTo = function (root) {\n return new MDCTextFieldCharacterCounter(root);\n };\n Object.defineProperty(MDCTextFieldCharacterCounter.prototype, \"foundationForTextField\", {\n // Provided for access by MDCTextField component\n get: function () {\n return this.foundation;\n },\n enumerable: false,\n configurable: true\n });\n MDCTextFieldCharacterCounter.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n setContent: function (content) {\n _this.root.textContent = content;\n }\n };\n return new MDCTextFieldCharacterCounterFoundation(adapter);\n };\n return MDCTextFieldCharacterCounter;\n}(MDCComponent);\nexport { MDCTextFieldCharacterCounter };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar strings = {\n ARIA_CONTROLS: 'aria-controls',\n ARIA_DESCRIBEDBY: 'aria-describedby',\n INPUT_SELECTOR: '.mdc-text-field__input',\n LABEL_SELECTOR: '.mdc-floating-label',\n LEADING_ICON_SELECTOR: '.mdc-text-field__icon--leading',\n LINE_RIPPLE_SELECTOR: '.mdc-line-ripple',\n OUTLINE_SELECTOR: '.mdc-notched-outline',\n PREFIX_SELECTOR: '.mdc-text-field__affix--prefix',\n SUFFIX_SELECTOR: '.mdc-text-field__affix--suffix',\n TRAILING_ICON_SELECTOR: '.mdc-text-field__icon--trailing'\n};\nvar cssClasses = {\n DISABLED: 'mdc-text-field--disabled',\n FOCUSED: 'mdc-text-field--focused',\n HELPER_LINE: 'mdc-text-field-helper-line',\n INVALID: 'mdc-text-field--invalid',\n LABEL_FLOATING: 'mdc-text-field--label-floating',\n NO_LABEL: 'mdc-text-field--no-label',\n OUTLINED: 'mdc-text-field--outlined',\n ROOT: 'mdc-text-field',\n TEXTAREA: 'mdc-text-field--textarea',\n WITH_LEADING_ICON: 'mdc-text-field--with-leading-icon',\n WITH_TRAILING_ICON: 'mdc-text-field--with-trailing-icon',\n WITH_INTERNAL_COUNTER: 'mdc-text-field--with-internal-counter'\n};\nvar numbers = {\n LABEL_SCALE: 0.75\n};\n/**\n * Whitelist based off of\n * https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation\n * under the \"Validation-related attributes\" section.\n */\nvar VALIDATION_ATTR_WHITELIST = ['pattern', 'min', 'max', 'required', 'step', 'minlength', 'maxlength'];\n/**\n * Label should always float for these types as they show some UI even if value\n * is empty.\n */\nvar ALWAYS_FLOAT_TYPES = ['color', 'date', 'datetime-local', 'month', 'range', 'time', 'week'];\nexport { cssClasses, strings, numbers, VALIDATION_ATTR_WHITELIST, ALWAYS_FLOAT_TYPES };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends, __values } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { ALWAYS_FLOAT_TYPES, cssClasses, numbers, strings, VALIDATION_ATTR_WHITELIST } from './constants';\nvar POINTERDOWN_EVENTS = ['mousedown', 'touchstart'];\nvar INTERACTION_EVENTS = ['click', 'keydown'];\nvar MDCTextFieldFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldFoundation, _super);\n /**\n * @param adapter\n * @param foundationMap Map from subcomponent names to their subfoundations.\n */\n function MDCTextFieldFoundation(adapter, foundationMap) {\n if (foundationMap === void 0) {\n foundationMap = {};\n }\n var _this = _super.call(this, __assign(__assign({}, MDCTextFieldFoundation.defaultAdapter), adapter)) || this;\n _this.isFocused = false;\n _this.receivedUserInput = false;\n _this.valid = true;\n _this.useNativeValidation = true;\n _this.validateOnValueChange = true;\n _this.helperText = foundationMap.helperText;\n _this.characterCounter = foundationMap.characterCounter;\n _this.leadingIcon = foundationMap.leadingIcon;\n _this.trailingIcon = foundationMap.trailingIcon;\n _this.inputFocusHandler = function () {\n _this.activateFocus();\n };\n _this.inputBlurHandler = function () {\n _this.deactivateFocus();\n };\n _this.inputInputHandler = function () {\n _this.handleInput();\n };\n _this.setPointerXOffset = function (evt) {\n _this.setTransformOrigin(evt);\n };\n _this.textFieldInteractionHandler = function () {\n _this.handleTextFieldInteraction();\n };\n _this.validationAttributeChangeHandler = function (attributesList) {\n _this.handleValidationAttributeChange(attributesList);\n };\n return _this;\n }\n Object.defineProperty(MDCTextFieldFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldAlwaysFloat\", {\n get: function () {\n var type = this.getNativeInput().type;\n return ALWAYS_FLOAT_TYPES.indexOf(type) >= 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldFloat\", {\n get: function () {\n return this.shouldAlwaysFloat || this.isFocused || !!this.getValue() || this.isBadInput();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation.prototype, \"shouldShake\", {\n get: function () {\n return !this.isFocused && !this.isValid() && !!this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldAdapter} for typing information on parameters and\n * return types.\n */\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n hasClass: function () {\n return true;\n },\n setInputAttr: function () {\n return undefined;\n },\n removeInputAttr: function () {\n return undefined;\n },\n registerTextFieldInteractionHandler: function () {\n return undefined;\n },\n deregisterTextFieldInteractionHandler: function () {\n return undefined;\n },\n registerInputInteractionHandler: function () {\n return undefined;\n },\n deregisterInputInteractionHandler: function () {\n return undefined;\n },\n registerValidationAttributeChangeHandler: function () {\n return new MutationObserver(function () {\n return undefined;\n });\n },\n deregisterValidationAttributeChangeHandler: function () {\n return undefined;\n },\n getNativeInput: function () {\n return null;\n },\n isFocused: function () {\n return false;\n },\n activateLineRipple: function () {\n return undefined;\n },\n deactivateLineRipple: function () {\n return undefined;\n },\n setLineRippleTransformOrigin: function () {\n return undefined;\n },\n shakeLabel: function () {\n return undefined;\n },\n floatLabel: function () {\n return undefined;\n },\n setLabelRequired: function () {\n return undefined;\n },\n hasLabel: function () {\n return false;\n },\n getLabelWidth: function () {\n return 0;\n },\n hasOutline: function () {\n return false;\n },\n notchOutline: function () {\n return undefined;\n },\n closeOutline: function () {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n\n enumerable: false,\n configurable: true\n });\n MDCTextFieldFoundation.prototype.init = function () {\n var e_1, _a, e_2, _b;\n if (this.adapter.hasLabel() && this.getNativeInput().required) {\n this.adapter.setLabelRequired(true);\n }\n if (this.adapter.isFocused()) {\n this.inputFocusHandler();\n } else if (this.adapter.hasLabel() && this.shouldFloat) {\n this.notchOutline(true);\n this.adapter.floatLabel(true);\n this.styleFloating(true);\n }\n this.adapter.registerInputInteractionHandler('focus', this.inputFocusHandler);\n this.adapter.registerInputInteractionHandler('blur', this.inputBlurHandler);\n this.adapter.registerInputInteractionHandler('input', this.inputInputHandler);\n try {\n for (var POINTERDOWN_EVENTS_1 = __values(POINTERDOWN_EVENTS), POINTERDOWN_EVENTS_1_1 = POINTERDOWN_EVENTS_1.next(); !POINTERDOWN_EVENTS_1_1.done; POINTERDOWN_EVENTS_1_1 = POINTERDOWN_EVENTS_1.next()) {\n var evtType = POINTERDOWN_EVENTS_1_1.value;\n this.adapter.registerInputInteractionHandler(evtType, this.setPointerXOffset);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (POINTERDOWN_EVENTS_1_1 && !POINTERDOWN_EVENTS_1_1.done && (_a = POINTERDOWN_EVENTS_1.return)) _a.call(POINTERDOWN_EVENTS_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n try {\n for (var INTERACTION_EVENTS_1 = __values(INTERACTION_EVENTS), INTERACTION_EVENTS_1_1 = INTERACTION_EVENTS_1.next(); !INTERACTION_EVENTS_1_1.done; INTERACTION_EVENTS_1_1 = INTERACTION_EVENTS_1.next()) {\n var evtType = INTERACTION_EVENTS_1_1.value;\n this.adapter.registerTextFieldInteractionHandler(evtType, this.textFieldInteractionHandler);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (INTERACTION_EVENTS_1_1 && !INTERACTION_EVENTS_1_1.done && (_b = INTERACTION_EVENTS_1.return)) _b.call(INTERACTION_EVENTS_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n this.validationObserver = this.adapter.registerValidationAttributeChangeHandler(this.validationAttributeChangeHandler);\n this.setcharacterCounter(this.getValue().length);\n };\n MDCTextFieldFoundation.prototype.destroy = function () {\n var e_3, _a, e_4, _b;\n this.adapter.deregisterInputInteractionHandler('focus', this.inputFocusHandler);\n this.adapter.deregisterInputInteractionHandler('blur', this.inputBlurHandler);\n this.adapter.deregisterInputInteractionHandler('input', this.inputInputHandler);\n try {\n for (var POINTERDOWN_EVENTS_2 = __values(POINTERDOWN_EVENTS), POINTERDOWN_EVENTS_2_1 = POINTERDOWN_EVENTS_2.next(); !POINTERDOWN_EVENTS_2_1.done; POINTERDOWN_EVENTS_2_1 = POINTERDOWN_EVENTS_2.next()) {\n var evtType = POINTERDOWN_EVENTS_2_1.value;\n this.adapter.deregisterInputInteractionHandler(evtType, this.setPointerXOffset);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (POINTERDOWN_EVENTS_2_1 && !POINTERDOWN_EVENTS_2_1.done && (_a = POINTERDOWN_EVENTS_2.return)) _a.call(POINTERDOWN_EVENTS_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n try {\n for (var INTERACTION_EVENTS_2 = __values(INTERACTION_EVENTS), INTERACTION_EVENTS_2_1 = INTERACTION_EVENTS_2.next(); !INTERACTION_EVENTS_2_1.done; INTERACTION_EVENTS_2_1 = INTERACTION_EVENTS_2.next()) {\n var evtType = INTERACTION_EVENTS_2_1.value;\n this.adapter.deregisterTextFieldInteractionHandler(evtType, this.textFieldInteractionHandler);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (INTERACTION_EVENTS_2_1 && !INTERACTION_EVENTS_2_1.done && (_b = INTERACTION_EVENTS_2.return)) _b.call(INTERACTION_EVENTS_2);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n this.adapter.deregisterValidationAttributeChangeHandler(this.validationObserver);\n };\n /**\n * Handles user interactions with the Text Field.\n */\n MDCTextFieldFoundation.prototype.handleTextFieldInteraction = function () {\n var nativeInput = this.adapter.getNativeInput();\n if (nativeInput && nativeInput.disabled) {\n return;\n }\n this.receivedUserInput = true;\n };\n /**\n * Handles validation attribute changes\n */\n MDCTextFieldFoundation.prototype.handleValidationAttributeChange = function (attributesList) {\n var _this = this;\n attributesList.some(function (attributeName) {\n if (VALIDATION_ATTR_WHITELIST.indexOf(attributeName) > -1) {\n _this.styleValidity(true);\n _this.adapter.setLabelRequired(_this.getNativeInput().required);\n return true;\n }\n return false;\n });\n if (attributesList.indexOf('maxlength') > -1) {\n this.setcharacterCounter(this.getValue().length);\n }\n };\n /**\n * Opens/closes the notched outline.\n */\n MDCTextFieldFoundation.prototype.notchOutline = function (openNotch) {\n if (!this.adapter.hasOutline() || !this.adapter.hasLabel()) {\n return;\n }\n if (openNotch) {\n var labelWidth = this.adapter.getLabelWidth() * numbers.LABEL_SCALE;\n this.adapter.notchOutline(labelWidth);\n } else {\n this.adapter.closeOutline();\n }\n };\n /**\n * Activates the text field focus state.\n */\n MDCTextFieldFoundation.prototype.activateFocus = function () {\n this.isFocused = true;\n this.styleFocused(this.isFocused);\n this.adapter.activateLineRipple();\n if (this.adapter.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter.floatLabel(this.shouldFloat);\n this.styleFloating(this.shouldFloat);\n this.adapter.shakeLabel(this.shouldShake);\n }\n if (this.helperText && (this.helperText.isPersistent() || !this.helperText.isValidation() || !this.valid)) {\n this.helperText.showToScreenReader();\n }\n };\n /**\n * Sets the line ripple's transform origin, so that the line ripple activate\n * animation will animate out from the user's click location.\n */\n MDCTextFieldFoundation.prototype.setTransformOrigin = function (evt) {\n if (this.isDisabled() || this.adapter.hasOutline()) {\n return;\n }\n var touches = evt.touches;\n var targetEvent = touches ? touches[0] : evt;\n var targetClientRect = targetEvent.target.getBoundingClientRect();\n var normalizedX = targetEvent.clientX - targetClientRect.left;\n this.adapter.setLineRippleTransformOrigin(normalizedX);\n };\n /**\n * Handles input change of text input and text area.\n */\n MDCTextFieldFoundation.prototype.handleInput = function () {\n this.autoCompleteFocus();\n this.setcharacterCounter(this.getValue().length);\n };\n /**\n * Activates the Text Field's focus state in cases when the input value\n * changes without user input (e.g. programmatically).\n */\n MDCTextFieldFoundation.prototype.autoCompleteFocus = function () {\n if (!this.receivedUserInput) {\n this.activateFocus();\n }\n };\n /**\n * Deactivates the Text Field's focus state.\n */\n MDCTextFieldFoundation.prototype.deactivateFocus = function () {\n this.isFocused = false;\n this.adapter.deactivateLineRipple();\n var isValid = this.isValid();\n this.styleValidity(isValid);\n this.styleFocused(this.isFocused);\n if (this.adapter.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter.floatLabel(this.shouldFloat);\n this.styleFloating(this.shouldFloat);\n this.adapter.shakeLabel(this.shouldShake);\n }\n if (!this.shouldFloat) {\n this.receivedUserInput = false;\n }\n };\n MDCTextFieldFoundation.prototype.getValue = function () {\n return this.getNativeInput().value;\n };\n /**\n * @param value The value to set on the input Element.\n */\n MDCTextFieldFoundation.prototype.setValue = function (value) {\n // Prevent Safari from moving the caret to the end of the input when the\n // value has not changed.\n if (this.getValue() !== value) {\n this.getNativeInput().value = value;\n }\n this.setcharacterCounter(value.length);\n if (this.validateOnValueChange) {\n var isValid = this.isValid();\n this.styleValidity(isValid);\n }\n if (this.adapter.hasLabel()) {\n this.notchOutline(this.shouldFloat);\n this.adapter.floatLabel(this.shouldFloat);\n this.styleFloating(this.shouldFloat);\n if (this.validateOnValueChange) {\n this.adapter.shakeLabel(this.shouldShake);\n }\n }\n };\n /**\n * @return The custom validity state, if set; otherwise, the result of a\n * native validity check.\n */\n MDCTextFieldFoundation.prototype.isValid = function () {\n return this.useNativeValidation ? this.isNativeInputValid() : this.valid;\n };\n /**\n * @param isValid Sets the custom validity state of the Text Field.\n */\n MDCTextFieldFoundation.prototype.setValid = function (isValid) {\n this.valid = isValid;\n this.styleValidity(isValid);\n var shouldShake = !isValid && !this.isFocused && !!this.getValue();\n if (this.adapter.hasLabel()) {\n this.adapter.shakeLabel(shouldShake);\n }\n };\n /**\n * @param shouldValidate Whether or not validity should be updated on\n * value change.\n */\n MDCTextFieldFoundation.prototype.setValidateOnValueChange = function (shouldValidate) {\n this.validateOnValueChange = shouldValidate;\n };\n /**\n * @return Whether or not validity should be updated on value change. `true`\n * by default.\n */\n MDCTextFieldFoundation.prototype.getValidateOnValueChange = function () {\n return this.validateOnValueChange;\n };\n /**\n * Enables or disables the use of native validation. Use this for custom\n * validation.\n * @param useNativeValidation Set this to false to ignore native input\n * validation.\n */\n MDCTextFieldFoundation.prototype.setUseNativeValidation = function (useNativeValidation) {\n this.useNativeValidation = useNativeValidation;\n };\n MDCTextFieldFoundation.prototype.isDisabled = function () {\n return this.getNativeInput().disabled;\n };\n /**\n * @param disabled Sets the text-field disabled or enabled.\n */\n MDCTextFieldFoundation.prototype.setDisabled = function (disabled) {\n this.getNativeInput().disabled = disabled;\n this.styleDisabled(disabled);\n };\n /**\n * @param content Sets the content of the helper text.\n */\n MDCTextFieldFoundation.prototype.setHelperTextContent = function (content) {\n if (this.helperText) {\n this.helperText.setContent(content);\n }\n };\n /**\n * Sets the aria label of the leading icon.\n */\n MDCTextFieldFoundation.prototype.setLeadingIconAriaLabel = function (label) {\n if (this.leadingIcon) {\n this.leadingIcon.setAriaLabel(label);\n }\n };\n /**\n * Sets the text content of the leading icon.\n */\n MDCTextFieldFoundation.prototype.setLeadingIconContent = function (content) {\n if (this.leadingIcon) {\n this.leadingIcon.setContent(content);\n }\n };\n /**\n * Sets the aria label of the trailing icon.\n */\n MDCTextFieldFoundation.prototype.setTrailingIconAriaLabel = function (label) {\n if (this.trailingIcon) {\n this.trailingIcon.setAriaLabel(label);\n }\n };\n /**\n * Sets the text content of the trailing icon.\n */\n MDCTextFieldFoundation.prototype.setTrailingIconContent = function (content) {\n if (this.trailingIcon) {\n this.trailingIcon.setContent(content);\n }\n };\n /**\n * Sets character counter values that shows characters used and the total\n * character limit.\n */\n MDCTextFieldFoundation.prototype.setcharacterCounter = function (currentLength) {\n if (!this.characterCounter) {\n return;\n }\n var maxLength = this.getNativeInput().maxLength;\n if (maxLength === -1) {\n throw new Error('MDCTextFieldFoundation: Expected maxlength html property on text input or textarea.');\n }\n this.characterCounter.setCounterValue(currentLength, maxLength);\n };\n /**\n * @return True if the Text Field input fails in converting the user-supplied\n * value.\n */\n MDCTextFieldFoundation.prototype.isBadInput = function () {\n // The badInput property is not supported in IE 11 💩.\n return this.getNativeInput().validity.badInput || false;\n };\n /**\n * @return The result of native validity checking (ValidityState.valid).\n */\n MDCTextFieldFoundation.prototype.isNativeInputValid = function () {\n return this.getNativeInput().validity.valid;\n };\n /**\n * Styles the component based on the validity state.\n */\n MDCTextFieldFoundation.prototype.styleValidity = function (isValid) {\n var INVALID = MDCTextFieldFoundation.cssClasses.INVALID;\n if (isValid) {\n this.adapter.removeClass(INVALID);\n } else {\n this.adapter.addClass(INVALID);\n }\n if (this.helperText) {\n this.helperText.setValidity(isValid);\n // We dynamically set or unset aria-describedby for validation helper text\n // only, based on whether the field is valid\n var helperTextValidation = this.helperText.isValidation();\n if (!helperTextValidation) {\n return;\n }\n var helperTextVisible = this.helperText.isVisible();\n var helperTextId = this.helperText.getId();\n if (helperTextVisible && helperTextId) {\n this.adapter.setInputAttr(strings.ARIA_DESCRIBEDBY, helperTextId);\n } else {\n this.adapter.removeInputAttr(strings.ARIA_DESCRIBEDBY);\n }\n }\n };\n /**\n * Styles the component based on the focused state.\n */\n MDCTextFieldFoundation.prototype.styleFocused = function (isFocused) {\n var FOCUSED = MDCTextFieldFoundation.cssClasses.FOCUSED;\n if (isFocused) {\n this.adapter.addClass(FOCUSED);\n } else {\n this.adapter.removeClass(FOCUSED);\n }\n };\n /**\n * Styles the component based on the disabled state.\n */\n MDCTextFieldFoundation.prototype.styleDisabled = function (isDisabled) {\n var _a = MDCTextFieldFoundation.cssClasses,\n DISABLED = _a.DISABLED,\n INVALID = _a.INVALID;\n if (isDisabled) {\n this.adapter.addClass(DISABLED);\n this.adapter.removeClass(INVALID);\n } else {\n this.adapter.removeClass(DISABLED);\n }\n if (this.leadingIcon) {\n this.leadingIcon.setDisabled(isDisabled);\n }\n if (this.trailingIcon) {\n this.trailingIcon.setDisabled(isDisabled);\n }\n };\n /**\n * Styles the component based on the label floating state.\n */\n MDCTextFieldFoundation.prototype.styleFloating = function (isFloating) {\n var LABEL_FLOATING = MDCTextFieldFoundation.cssClasses.LABEL_FLOATING;\n if (isFloating) {\n this.adapter.addClass(LABEL_FLOATING);\n } else {\n this.adapter.removeClass(LABEL_FLOATING);\n }\n };\n /**\n * @return The native text input element from the host environment, or an\n * object with the same shape for unit tests.\n */\n MDCTextFieldFoundation.prototype.getNativeInput = function () {\n // this.adapter may be undefined in foundation unit tests. This happens when\n // testdouble is creating a mock object and invokes the\n // shouldShake/shouldFloat getters (which in turn call getValue(), which\n // calls this method) before init() has been called from the MDCTextField\n // constructor. To work around that issue, we return a dummy object.\n var nativeInput = this.adapter ? this.adapter.getNativeInput() : null;\n return nativeInput || {\n disabled: false,\n maxLength: -1,\n required: false,\n type: 'input',\n validity: {\n badInput: false,\n valid: true\n },\n value: ''\n };\n };\n return MDCTextFieldFoundation;\n}(MDCFoundation);\nexport { MDCTextFieldFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTextFieldFoundation;","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n HELPER_TEXT_PERSISTENT: 'mdc-text-field-helper-text--persistent',\n HELPER_TEXT_VALIDATION_MSG: 'mdc-text-field-helper-text--validation-msg',\n ROOT: 'mdc-text-field-helper-text'\n};\nvar strings = {\n ARIA_HIDDEN: 'aria-hidden',\n ROLE: 'role',\n ROOT_SELECTOR: \".\" + cssClasses.ROOT\n};\nexport { strings, cssClasses };","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, strings } from './constants';\nvar MDCTextFieldHelperTextFoundation = /** @class */function (_super) {\n __extends(MDCTextFieldHelperTextFoundation, _super);\n function MDCTextFieldHelperTextFoundation(adapter) {\n return _super.call(this, __assign(__assign({}, MDCTextFieldHelperTextFoundation.defaultAdapter), adapter)) || this;\n }\n Object.defineProperty(MDCTextFieldHelperTextFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldHelperTextFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextFieldHelperTextFoundation, \"defaultAdapter\", {\n /**\n * See {@link MDCTextFieldHelperTextAdapter} for typing information on parameters and return types.\n */\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n hasClass: function () {\n return false;\n },\n getAttr: function () {\n return null;\n },\n setAttr: function () {\n return undefined;\n },\n removeAttr: function () {\n return undefined;\n },\n setContent: function () {\n return undefined;\n }\n };\n // tslint:enable:object-literal-sort-keys\n },\n\n enumerable: false,\n configurable: true\n });\n MDCTextFieldHelperTextFoundation.prototype.getId = function () {\n return this.adapter.getAttr('id');\n };\n MDCTextFieldHelperTextFoundation.prototype.isVisible = function () {\n return this.adapter.getAttr(strings.ARIA_HIDDEN) !== 'true';\n };\n /**\n * Sets the content of the helper text field.\n */\n MDCTextFieldHelperTextFoundation.prototype.setContent = function (content) {\n this.adapter.setContent(content);\n };\n MDCTextFieldHelperTextFoundation.prototype.isPersistent = function () {\n return this.adapter.hasClass(cssClasses.HELPER_TEXT_PERSISTENT);\n };\n /**\n * @param isPersistent Sets the persistency of the helper text.\n */\n MDCTextFieldHelperTextFoundation.prototype.setPersistent = function (isPersistent) {\n if (isPersistent) {\n this.adapter.addClass(cssClasses.HELPER_TEXT_PERSISTENT);\n } else {\n this.adapter.removeClass(cssClasses.HELPER_TEXT_PERSISTENT);\n }\n };\n /**\n * @return whether the helper text acts as an error validation message.\n */\n MDCTextFieldHelperTextFoundation.prototype.isValidation = function () {\n return this.adapter.hasClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n };\n /**\n * @param isValidation True to make the helper text act as an error validation message.\n */\n MDCTextFieldHelperTextFoundation.prototype.setValidation = function (isValidation) {\n if (isValidation) {\n this.adapter.addClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n } else {\n this.adapter.removeClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n }\n };\n /**\n * Makes the helper text visible to the screen reader.\n */\n MDCTextFieldHelperTextFoundation.prototype.showToScreenReader = function () {\n this.adapter.removeAttr(strings.ARIA_HIDDEN);\n };\n /**\n * Sets the validity of the helper text based on the input validity.\n */\n MDCTextFieldHelperTextFoundation.prototype.setValidity = function (inputIsValid) {\n var helperTextIsPersistent = this.adapter.hasClass(cssClasses.HELPER_TEXT_PERSISTENT);\n var helperTextIsValidationMsg = this.adapter.hasClass(cssClasses.HELPER_TEXT_VALIDATION_MSG);\n var validationMsgNeedsDisplay = helperTextIsValidationMsg && !inputIsValid;\n if (validationMsgNeedsDisplay) {\n this.showToScreenReader();\n // If role is already alert, refresh it to trigger another announcement\n // from screenreader.\n if (this.adapter.getAttr(strings.ROLE) === 'alert') {\n this.refreshAlertRole();\n } else {\n this.adapter.setAttr(strings.ROLE, 'alert');\n }\n } else {\n this.adapter.removeAttr(strings.ROLE);\n }\n if (!helperTextIsPersistent && !validationMsgNeedsDisplay) {\n this.hide();\n }\n };\n /**\n * Hides the help text from screen readers.\n */\n MDCTextFieldHelperTextFoundation.prototype.hide = function () {\n this.adapter.setAttr(strings.ARIA_HIDDEN, 'true');\n };\n MDCTextFieldHelperTextFoundation.prototype.refreshAlertRole = function () {\n var _this = this;\n this.adapter.removeAttr(strings.ROLE);\n requestAnimationFrame(function () {\n _this.adapter.setAttr(strings.ROLE, 'alert');\n });\n };\n return MDCTextFieldHelperTextFoundation;\n}(MDCFoundation);\nexport { MDCTextFieldHelperTextFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCTextFieldHelperTextFoundation;","/**\n * @license\n * Copyright 2017 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { MDCTextFieldHelperTextFoundation } from './foundation';\nvar MDCTextFieldHelperText = /** @class */function (_super) {\n __extends(MDCTextFieldHelperText, _super);\n function MDCTextFieldHelperText() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTextFieldHelperText.attachTo = function (root) {\n return new MDCTextFieldHelperText(root);\n };\n Object.defineProperty(MDCTextFieldHelperText.prototype, \"foundationForTextField\", {\n // Provided for access by MDCTextField component\n get: function () {\n return this.foundation;\n },\n enumerable: false,\n configurable: true\n });\n MDCTextFieldHelperText.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n },\n hasClass: function (className) {\n return _this.root.classList.contains(className);\n },\n getAttr: function (attr) {\n return _this.root.getAttribute(attr);\n },\n setAttr: function (attr, value) {\n return _this.root.setAttribute(attr, value);\n },\n removeAttr: function (attr) {\n return _this.root.removeAttribute(attr);\n },\n setContent: function (content) {\n _this.root.textContent = content;\n }\n };\n // tslint:enable:object-literal-sort-keys\n return new MDCTextFieldHelperTextFoundation(adapter);\n };\n return MDCTextFieldHelperText;\n}(MDCComponent);\nexport { MDCTextFieldHelperText };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { applyPassive } from '@material/dom/events';\nimport * as ponyfill from '@material/dom/ponyfill';\nimport { MDCFloatingLabel } from '@material/floating-label/component';\nimport { MDCLineRipple } from '@material/line-ripple/component';\nimport { MDCNotchedOutline } from '@material/notched-outline/component';\nimport { MDCRipple } from '@material/ripple/component';\nimport { MDCRippleFoundation } from '@material/ripple/foundation';\nimport { MDCTextFieldCharacterCounter } from './character-counter/component';\nimport { MDCTextFieldCharacterCounterFoundation } from './character-counter/foundation';\nimport { cssClasses, strings } from './constants';\nimport { MDCTextFieldFoundation } from './foundation';\nimport { MDCTextFieldHelperText } from './helper-text/component';\nimport { MDCTextFieldHelperTextFoundation } from './helper-text/foundation';\nimport { MDCTextFieldIcon } from './icon/component';\nvar MDCTextField = /** @class */function (_super) {\n __extends(MDCTextField, _super);\n function MDCTextField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCTextField.attachTo = function (root) {\n return new MDCTextField(root);\n };\n MDCTextField.prototype.initialize = function (rippleFactory, lineRippleFactory, helperTextFactory, characterCounterFactory, iconFactory, labelFactory, outlineFactory) {\n if (rippleFactory === void 0) {\n rippleFactory = function (el, foundation) {\n return new MDCRipple(el, foundation);\n };\n }\n if (lineRippleFactory === void 0) {\n lineRippleFactory = function (el) {\n return new MDCLineRipple(el);\n };\n }\n if (helperTextFactory === void 0) {\n helperTextFactory = function (el) {\n return new MDCTextFieldHelperText(el);\n };\n }\n if (characterCounterFactory === void 0) {\n characterCounterFactory = function (el) {\n return new MDCTextFieldCharacterCounter(el);\n };\n }\n if (iconFactory === void 0) {\n iconFactory = function (el) {\n return new MDCTextFieldIcon(el);\n };\n }\n if (labelFactory === void 0) {\n labelFactory = function (el) {\n return new MDCFloatingLabel(el);\n };\n }\n if (outlineFactory === void 0) {\n outlineFactory = function (el) {\n return new MDCNotchedOutline(el);\n };\n }\n this.input = this.root.querySelector(strings.INPUT_SELECTOR);\n var labelElement = this.root.querySelector(strings.LABEL_SELECTOR);\n this.label = labelElement ? labelFactory(labelElement) : null;\n var lineRippleElement = this.root.querySelector(strings.LINE_RIPPLE_SELECTOR);\n this.lineRipple = lineRippleElement ? lineRippleFactory(lineRippleElement) : null;\n var outlineElement = this.root.querySelector(strings.OUTLINE_SELECTOR);\n this.outline = outlineElement ? outlineFactory(outlineElement) : null;\n // Helper text\n var helperTextStrings = MDCTextFieldHelperTextFoundation.strings;\n var nextElementSibling = this.root.nextElementSibling;\n var hasHelperLine = nextElementSibling && nextElementSibling.classList.contains(cssClasses.HELPER_LINE);\n var helperTextEl = hasHelperLine && nextElementSibling && nextElementSibling.querySelector(helperTextStrings.ROOT_SELECTOR);\n this.helperText = helperTextEl ? helperTextFactory(helperTextEl) : null;\n // Character counter\n var characterCounterStrings = MDCTextFieldCharacterCounterFoundation.strings;\n var characterCounterEl = this.root.querySelector(characterCounterStrings.ROOT_SELECTOR);\n // If character counter is not found in root element search in sibling element.\n if (!characterCounterEl && hasHelperLine && nextElementSibling) {\n characterCounterEl = nextElementSibling.querySelector(characterCounterStrings.ROOT_SELECTOR);\n }\n this.characterCounter = characterCounterEl ? characterCounterFactory(characterCounterEl) : null;\n // Leading icon\n var leadingIconEl = this.root.querySelector(strings.LEADING_ICON_SELECTOR);\n this.leadingIcon = leadingIconEl ? iconFactory(leadingIconEl) : null;\n // Trailing icon\n var trailingIconEl = this.root.querySelector(strings.TRAILING_ICON_SELECTOR);\n this.trailingIcon = trailingIconEl ? iconFactory(trailingIconEl) : null;\n // Prefix and Suffix\n this.prefix = this.root.querySelector(strings.PREFIX_SELECTOR);\n this.suffix = this.root.querySelector(strings.SUFFIX_SELECTOR);\n this.ripple = this.createRipple(rippleFactory);\n };\n MDCTextField.prototype.destroy = function () {\n if (this.ripple) {\n this.ripple.destroy();\n }\n if (this.lineRipple) {\n this.lineRipple.destroy();\n }\n if (this.helperText) {\n this.helperText.destroy();\n }\n if (this.characterCounter) {\n this.characterCounter.destroy();\n }\n if (this.leadingIcon) {\n this.leadingIcon.destroy();\n }\n if (this.trailingIcon) {\n this.trailingIcon.destroy();\n }\n if (this.label) {\n this.label.destroy();\n }\n if (this.outline) {\n this.outline.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Initializes the Text Field's internal state based on the environment's\n * state.\n */\n MDCTextField.prototype.initialSyncWithDOM = function () {\n this.disabled = this.input.disabled;\n };\n Object.defineProperty(MDCTextField.prototype, \"value\", {\n get: function () {\n return this.foundation.getValue();\n },\n /**\n * @param value The value to set on the input.\n */\n set: function (value) {\n this.foundation.setValue(value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"disabled\", {\n get: function () {\n return this.foundation.isDisabled();\n },\n /**\n * @param disabled Sets the Text Field disabled or enabled.\n */\n set: function (disabled) {\n this.foundation.setDisabled(disabled);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"valid\", {\n get: function () {\n return this.foundation.isValid();\n },\n /**\n * @param valid Sets the Text Field valid or invalid.\n */\n set: function (valid) {\n this.foundation.setValid(valid);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"required\", {\n get: function () {\n return this.input.required;\n },\n /**\n * @param required Sets the Text Field to required.\n */\n set: function (required) {\n this.input.required = required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"pattern\", {\n get: function () {\n return this.input.pattern;\n },\n /**\n * @param pattern Sets the input element's validation pattern.\n */\n set: function (pattern) {\n this.input.pattern = pattern;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"minLength\", {\n get: function () {\n return this.input.minLength;\n },\n /**\n * @param minLength Sets the input element's minLength.\n */\n set: function (minLength) {\n this.input.minLength = minLength;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"maxLength\", {\n get: function () {\n return this.input.maxLength;\n },\n /**\n * @param maxLength Sets the input element's maxLength.\n */\n set: function (maxLength) {\n // Chrome throws exception if maxLength is set to a value less than zero\n if (maxLength < 0) {\n this.input.removeAttribute('maxLength');\n } else {\n this.input.maxLength = maxLength;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"min\", {\n get: function () {\n return this.input.min;\n },\n /**\n * @param min Sets the input element's min.\n */\n set: function (min) {\n this.input.min = min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"max\", {\n get: function () {\n return this.input.max;\n },\n /**\n * @param max Sets the input element's max.\n */\n set: function (max) {\n this.input.max = max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"step\", {\n get: function () {\n return this.input.step;\n },\n /**\n * @param step Sets the input element's step.\n */\n set: function (step) {\n this.input.step = step;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"helperTextContent\", {\n /**\n * Sets the helper text element content.\n */\n set: function (content) {\n this.foundation.setHelperTextContent(content);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"leadingIconAriaLabel\", {\n /**\n * Sets the aria label of the leading icon.\n */\n set: function (label) {\n this.foundation.setLeadingIconAriaLabel(label);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"leadingIconContent\", {\n /**\n * Sets the text content of the leading icon.\n */\n set: function (content) {\n this.foundation.setLeadingIconContent(content);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"trailingIconAriaLabel\", {\n /**\n * Sets the aria label of the trailing icon.\n */\n set: function (label) {\n this.foundation.setTrailingIconAriaLabel(label);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"trailingIconContent\", {\n /**\n * Sets the text content of the trailing icon.\n */\n set: function (content) {\n this.foundation.setTrailingIconContent(content);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"useNativeValidation\", {\n /**\n * Enables or disables the use of native validation. Use this for custom validation.\n * @param useNativeValidation Set this to false to ignore native input validation.\n */\n set: function (useNativeValidation) {\n this.foundation.setUseNativeValidation(useNativeValidation);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"prefixText\", {\n /**\n * Gets the text content of the prefix, or null if it does not exist.\n */\n get: function () {\n return this.prefix ? this.prefix.textContent : null;\n },\n /**\n * Sets the text content of the prefix, if it exists.\n */\n set: function (prefixText) {\n if (this.prefix) {\n this.prefix.textContent = prefixText;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCTextField.prototype, \"suffixText\", {\n /**\n * Gets the text content of the suffix, or null if it does not exist.\n */\n get: function () {\n return this.suffix ? this.suffix.textContent : null;\n },\n /**\n * Sets the text content of the suffix, if it exists.\n */\n set: function (suffixText) {\n if (this.suffix) {\n this.suffix.textContent = suffixText;\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Focuses the input element.\n */\n MDCTextField.prototype.focus = function () {\n this.input.focus();\n };\n /**\n * Recomputes the outline SVG path for the outline element.\n */\n MDCTextField.prototype.layout = function () {\n var openNotch = this.foundation.shouldFloat;\n this.foundation.notchOutline(openNotch);\n };\n MDCTextField.prototype.getDefaultFoundation = function () {\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = __assign(__assign(__assign(__assign(__assign({}, this.getRootAdapterMethods()), this.getInputAdapterMethods()), this.getLabelAdapterMethods()), this.getLineRippleAdapterMethods()), this.getOutlineAdapterMethods());\n // tslint:enable:object-literal-sort-keys\n return new MDCTextFieldFoundation(adapter, this.getFoundationMap());\n };\n MDCTextField.prototype.getRootAdapterMethods = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n },\n hasClass: function (className) {\n return _this.root.classList.contains(className);\n },\n registerTextFieldInteractionHandler: function (evtType, handler) {\n _this.listen(evtType, handler);\n },\n deregisterTextFieldInteractionHandler: function (evtType, handler) {\n _this.unlisten(evtType, handler);\n },\n registerValidationAttributeChangeHandler: function (handler) {\n var getAttributesList = function (mutationsList) {\n return mutationsList.map(function (mutation) {\n return mutation.attributeName;\n }).filter(function (attributeName) {\n return attributeName;\n });\n };\n var observer = new MutationObserver(function (mutationsList) {\n return handler(getAttributesList(mutationsList));\n });\n var config = {\n attributes: true\n };\n observer.observe(_this.input, config);\n return observer;\n },\n deregisterValidationAttributeChangeHandler: function (observer) {\n observer.disconnect();\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n\n MDCTextField.prototype.getInputAdapterMethods = function () {\n var _this = this;\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n getNativeInput: function () {\n return _this.input;\n },\n setInputAttr: function (attr, value) {\n _this.input.setAttribute(attr, value);\n },\n removeInputAttr: function (attr) {\n _this.input.removeAttribute(attr);\n },\n isFocused: function () {\n return document.activeElement === _this.input;\n },\n registerInputInteractionHandler: function (evtType, handler) {\n _this.input.addEventListener(evtType, handler, applyPassive());\n },\n deregisterInputInteractionHandler: function (evtType, handler) {\n _this.input.removeEventListener(evtType, handler, applyPassive());\n }\n };\n // tslint:enable:object-literal-sort-keys\n };\n\n MDCTextField.prototype.getLabelAdapterMethods = function () {\n var _this = this;\n return {\n floatLabel: function (shouldFloat) {\n _this.label && _this.label.float(shouldFloat);\n },\n getLabelWidth: function () {\n return _this.label ? _this.label.getWidth() : 0;\n },\n hasLabel: function () {\n return Boolean(_this.label);\n },\n shakeLabel: function (shouldShake) {\n _this.label && _this.label.shake(shouldShake);\n },\n setLabelRequired: function (isRequired) {\n _this.label && _this.label.setRequired(isRequired);\n }\n };\n };\n MDCTextField.prototype.getLineRippleAdapterMethods = function () {\n var _this = this;\n return {\n activateLineRipple: function () {\n if (_this.lineRipple) {\n _this.lineRipple.activate();\n }\n },\n deactivateLineRipple: function () {\n if (_this.lineRipple) {\n _this.lineRipple.deactivate();\n }\n },\n setLineRippleTransformOrigin: function (normalizedX) {\n if (_this.lineRipple) {\n _this.lineRipple.setRippleCenter(normalizedX);\n }\n }\n };\n };\n MDCTextField.prototype.getOutlineAdapterMethods = function () {\n var _this = this;\n return {\n closeOutline: function () {\n _this.outline && _this.outline.closeNotch();\n },\n hasOutline: function () {\n return Boolean(_this.outline);\n },\n notchOutline: function (labelWidth) {\n _this.outline && _this.outline.notch(labelWidth);\n }\n };\n };\n /**\n * @return A map of all subcomponents to subfoundations.\n */\n MDCTextField.prototype.getFoundationMap = function () {\n return {\n characterCounter: this.characterCounter ? this.characterCounter.foundationForTextField : undefined,\n helperText: this.helperText ? this.helperText.foundationForTextField : undefined,\n leadingIcon: this.leadingIcon ? this.leadingIcon.foundationForTextField : undefined,\n trailingIcon: this.trailingIcon ? this.trailingIcon.foundationForTextField : undefined\n };\n };\n MDCTextField.prototype.createRipple = function (rippleFactory) {\n var _this = this;\n var isTextArea = this.root.classList.contains(cssClasses.TEXTAREA);\n var isOutlined = this.root.classList.contains(cssClasses.OUTLINED);\n if (isTextArea || isOutlined) {\n return null;\n }\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n var adapter = __assign(__assign({}, MDCRipple.createAdapter(this)), {\n isSurfaceActive: function () {\n return ponyfill.matches(_this.input, ':active');\n },\n registerInteractionHandler: function (evtType, handler) {\n _this.input.addEventListener(evtType, handler, applyPassive());\n },\n deregisterInteractionHandler: function (evtType, handler) {\n _this.input.removeEventListener(evtType, handler, applyPassive());\n }\n });\n // tslint:enable:object-literal-sort-keys\n return rippleFactory(this.root, new MDCRippleFoundation(adapter));\n };\n return MDCTextField;\n}(MDCComponent);\nexport { MDCTextField };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport var cssClasses = {\n ANIM_CHECKED_INDETERMINATE: 'mdc-checkbox--anim-checked-indeterminate',\n ANIM_CHECKED_UNCHECKED: 'mdc-checkbox--anim-checked-unchecked',\n ANIM_INDETERMINATE_CHECKED: 'mdc-checkbox--anim-indeterminate-checked',\n ANIM_INDETERMINATE_UNCHECKED: 'mdc-checkbox--anim-indeterminate-unchecked',\n ANIM_UNCHECKED_CHECKED: 'mdc-checkbox--anim-unchecked-checked',\n ANIM_UNCHECKED_INDETERMINATE: 'mdc-checkbox--anim-unchecked-indeterminate',\n BACKGROUND: 'mdc-checkbox__background',\n CHECKED: 'mdc-checkbox--checked',\n CHECKMARK: 'mdc-checkbox__checkmark',\n CHECKMARK_PATH: 'mdc-checkbox__checkmark-path',\n DISABLED: 'mdc-checkbox--disabled',\n INDETERMINATE: 'mdc-checkbox--indeterminate',\n MIXEDMARK: 'mdc-checkbox__mixedmark',\n NATIVE_CONTROL: 'mdc-checkbox__native-control',\n ROOT: 'mdc-checkbox',\n SELECTED: 'mdc-checkbox--selected',\n UPGRADED: 'mdc-checkbox--upgraded'\n};\nexport var strings = {\n ARIA_CHECKED_ATTR: 'aria-checked',\n ARIA_CHECKED_INDETERMINATE_VALUE: 'mixed',\n DATA_INDETERMINATE_ATTR: 'data-indeterminate',\n NATIVE_CONTROL_SELECTOR: '.mdc-checkbox__native-control',\n TRANSITION_STATE_CHECKED: 'checked',\n TRANSITION_STATE_INDETERMINATE: 'indeterminate',\n TRANSITION_STATE_INIT: 'init',\n TRANSITION_STATE_UNCHECKED: 'unchecked'\n};\nexport var numbers = {\n ANIM_END_LATCH_MS: 250\n};","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nvar MDCCheckboxFoundation = /** @class */function (_super) {\n __extends(MDCCheckboxFoundation, _super);\n function MDCCheckboxFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCCheckboxFoundation.defaultAdapter), adapter)) || this;\n _this.currentCheckState = strings.TRANSITION_STATE_INIT;\n _this.currentAnimationClass = '';\n _this.animEndLatchTimer = 0;\n _this.enableAnimationEndHandler = false;\n return _this;\n }\n Object.defineProperty(MDCCheckboxFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addClass: function () {\n return undefined;\n },\n forceLayout: function () {\n return undefined;\n },\n hasNativeControl: function () {\n return false;\n },\n isAttachedToDOM: function () {\n return false;\n },\n isChecked: function () {\n return false;\n },\n isIndeterminate: function () {\n return false;\n },\n removeClass: function () {\n return undefined;\n },\n removeNativeControlAttr: function () {\n return undefined;\n },\n setNativeControlAttr: function () {\n return undefined;\n },\n setNativeControlDisabled: function () {\n return undefined;\n }\n };\n },\n enumerable: false,\n configurable: true\n });\n MDCCheckboxFoundation.prototype.init = function () {\n this.currentCheckState = this.determineCheckState();\n this.updateAriaChecked();\n this.adapter.addClass(cssClasses.UPGRADED);\n };\n MDCCheckboxFoundation.prototype.destroy = function () {\n clearTimeout(this.animEndLatchTimer);\n };\n MDCCheckboxFoundation.prototype.setDisabled = function (disabled) {\n this.adapter.setNativeControlDisabled(disabled);\n if (disabled) {\n this.adapter.addClass(cssClasses.DISABLED);\n } else {\n this.adapter.removeClass(cssClasses.DISABLED);\n }\n };\n /**\n * Handles the animationend event for the checkbox\n */\n MDCCheckboxFoundation.prototype.handleAnimationEnd = function () {\n var _this = this;\n if (!this.enableAnimationEndHandler) {\n return;\n }\n clearTimeout(this.animEndLatchTimer);\n this.animEndLatchTimer = setTimeout(function () {\n _this.adapter.removeClass(_this.currentAnimationClass);\n _this.enableAnimationEndHandler = false;\n }, numbers.ANIM_END_LATCH_MS);\n };\n /**\n * Handles the change event for the checkbox\n */\n MDCCheckboxFoundation.prototype.handleChange = function () {\n this.transitionCheckState();\n };\n MDCCheckboxFoundation.prototype.transitionCheckState = function () {\n if (!this.adapter.hasNativeControl()) {\n return;\n }\n var oldState = this.currentCheckState;\n var newState = this.determineCheckState();\n if (oldState === newState) {\n return;\n }\n this.updateAriaChecked();\n var TRANSITION_STATE_UNCHECKED = strings.TRANSITION_STATE_UNCHECKED;\n var SELECTED = cssClasses.SELECTED;\n if (newState === TRANSITION_STATE_UNCHECKED) {\n this.adapter.removeClass(SELECTED);\n } else {\n this.adapter.addClass(SELECTED);\n }\n // Check to ensure that there isn't a previously existing animation class, in case for example\n // the user interacted with the checkbox before the animation was finished.\n if (this.currentAnimationClass.length > 0) {\n clearTimeout(this.animEndLatchTimer);\n this.adapter.forceLayout();\n this.adapter.removeClass(this.currentAnimationClass);\n }\n this.currentAnimationClass = this.getTransitionAnimationClass(oldState, newState);\n this.currentCheckState = newState;\n // Check for parentNode so that animations are only run when the element is attached\n // to the DOM.\n if (this.adapter.isAttachedToDOM() && this.currentAnimationClass.length > 0) {\n this.adapter.addClass(this.currentAnimationClass);\n this.enableAnimationEndHandler = true;\n }\n };\n MDCCheckboxFoundation.prototype.determineCheckState = function () {\n var TRANSITION_STATE_INDETERMINATE = strings.TRANSITION_STATE_INDETERMINATE,\n TRANSITION_STATE_CHECKED = strings.TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED = strings.TRANSITION_STATE_UNCHECKED;\n if (this.adapter.isIndeterminate()) {\n return TRANSITION_STATE_INDETERMINATE;\n }\n return this.adapter.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED;\n };\n MDCCheckboxFoundation.prototype.getTransitionAnimationClass = function (oldState, newState) {\n var TRANSITION_STATE_INIT = strings.TRANSITION_STATE_INIT,\n TRANSITION_STATE_CHECKED = strings.TRANSITION_STATE_CHECKED,\n TRANSITION_STATE_UNCHECKED = strings.TRANSITION_STATE_UNCHECKED;\n var _a = MDCCheckboxFoundation.cssClasses,\n ANIM_UNCHECKED_CHECKED = _a.ANIM_UNCHECKED_CHECKED,\n ANIM_UNCHECKED_INDETERMINATE = _a.ANIM_UNCHECKED_INDETERMINATE,\n ANIM_CHECKED_UNCHECKED = _a.ANIM_CHECKED_UNCHECKED,\n ANIM_CHECKED_INDETERMINATE = _a.ANIM_CHECKED_INDETERMINATE,\n ANIM_INDETERMINATE_CHECKED = _a.ANIM_INDETERMINATE_CHECKED,\n ANIM_INDETERMINATE_UNCHECKED = _a.ANIM_INDETERMINATE_UNCHECKED;\n switch (oldState) {\n case TRANSITION_STATE_INIT:\n if (newState === TRANSITION_STATE_UNCHECKED) {\n return '';\n }\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n case TRANSITION_STATE_UNCHECKED:\n return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE;\n case TRANSITION_STATE_CHECKED:\n return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE;\n default:\n // TRANSITION_STATE_INDETERMINATE\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n }\n };\n MDCCheckboxFoundation.prototype.updateAriaChecked = function () {\n // Ensure aria-checked is set to mixed if checkbox is in indeterminate state.\n if (this.adapter.isIndeterminate()) {\n this.adapter.setNativeControlAttr(strings.ARIA_CHECKED_ATTR, strings.ARIA_CHECKED_INDETERMINATE_VALUE);\n } else {\n // The on/off state does not need to keep track of aria-checked, since\n // the screenreader uses the checked property on the checkbox element.\n this.adapter.removeNativeControlAttr(strings.ARIA_CHECKED_ATTR);\n }\n };\n return MDCCheckboxFoundation;\n}(MDCFoundation);\nexport { MDCCheckboxFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCCheckboxFoundation;","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends, __values } from \"tslib\";\nimport { getCorrectEventName } from '@material/animation/util';\nimport { MDCComponent } from '@material/base/component';\nimport { applyPassive } from '@material/dom/events';\nimport { matches } from '@material/dom/ponyfill';\nimport { MDCRipple } from '@material/ripple/component';\nimport { MDCRippleFoundation } from '@material/ripple/foundation';\nimport { strings } from './constants';\nimport { MDCCheckboxFoundation } from './foundation';\nvar CB_PROTO_PROPS = ['checked', 'indeterminate'];\nvar MDCCheckbox = /** @class */function (_super) {\n __extends(MDCCheckbox, _super);\n function MDCCheckbox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rippleSurface = _this.createRipple();\n return _this;\n }\n MDCCheckbox.attachTo = function (root) {\n return new MDCCheckbox(root);\n };\n Object.defineProperty(MDCCheckbox.prototype, \"ripple\", {\n get: function () {\n return this.rippleSurface;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"checked\", {\n get: function () {\n return this.getNativeControl().checked;\n },\n set: function (checked) {\n this.getNativeControl().checked = checked;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"indeterminate\", {\n get: function () {\n return this.getNativeControl().indeterminate;\n },\n set: function (indeterminate) {\n this.getNativeControl().indeterminate = indeterminate;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"disabled\", {\n get: function () {\n return this.getNativeControl().disabled;\n },\n set: function (disabled) {\n this.foundation.setDisabled(disabled);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"value\", {\n get: function () {\n return this.getNativeControl().value;\n },\n set: function (value) {\n this.getNativeControl().value = value;\n },\n enumerable: false,\n configurable: true\n });\n MDCCheckbox.prototype.initialize = function () {\n var DATA_INDETERMINATE_ATTR = strings.DATA_INDETERMINATE_ATTR;\n this.getNativeControl().indeterminate = this.getNativeControl().getAttribute(DATA_INDETERMINATE_ATTR) === 'true';\n this.getNativeControl().removeAttribute(DATA_INDETERMINATE_ATTR);\n };\n MDCCheckbox.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.handleChange = function () {\n _this.foundation.handleChange();\n };\n this.handleAnimationEnd = function () {\n _this.foundation.handleAnimationEnd();\n };\n this.getNativeControl().addEventListener('change', this.handleChange);\n this.listen(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd);\n this.installPropertyChangeHooks();\n };\n MDCCheckbox.prototype.destroy = function () {\n this.rippleSurface.destroy();\n this.getNativeControl().removeEventListener('change', this.handleChange);\n this.unlisten(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd);\n this.uninstallPropertyChangeHooks();\n _super.prototype.destroy.call(this);\n };\n MDCCheckbox.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n forceLayout: function () {\n return _this.root.offsetWidth;\n },\n hasNativeControl: function () {\n return !!_this.getNativeControl();\n },\n isAttachedToDOM: function () {\n return Boolean(_this.root.parentNode);\n },\n isChecked: function () {\n return _this.checked;\n },\n isIndeterminate: function () {\n return _this.indeterminate;\n },\n removeClass: function (className) {\n _this.root.classList.remove(className);\n },\n removeNativeControlAttr: function (attr) {\n _this.getNativeControl().removeAttribute(attr);\n },\n setNativeControlAttr: function (attr, value) {\n _this.getNativeControl().setAttribute(attr, value);\n },\n setNativeControlDisabled: function (disabled) {\n _this.getNativeControl().disabled = disabled;\n }\n };\n return new MDCCheckboxFoundation(adapter);\n };\n MDCCheckbox.prototype.createRipple = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = __assign(__assign({}, MDCRipple.createAdapter(this)), {\n deregisterInteractionHandler: function (evtType, handler) {\n _this.getNativeControl().removeEventListener(evtType, handler, applyPassive());\n },\n isSurfaceActive: function () {\n return matches(_this.getNativeControl(), ':active');\n },\n isUnbounded: function () {\n return true;\n },\n registerInteractionHandler: function (evtType, handler) {\n _this.getNativeControl().addEventListener(evtType, handler, applyPassive());\n }\n });\n return new MDCRipple(this.root, new MDCRippleFoundation(adapter));\n };\n MDCCheckbox.prototype.installPropertyChangeHooks = function () {\n var e_1, _a;\n var _this = this;\n var nativeCb = this.getNativeControl();\n var cbProto = Object.getPrototypeOf(nativeCb);\n var _loop_1 = function (controlState) {\n var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);\n // We have to check for this descriptor, since some browsers (Safari) don't support its return.\n // See: https://bugs.webkit.org/show_bug.cgi?id=49739\n if (!validDescriptor(desc)) {\n return {\n value: void 0\n };\n }\n // Type cast is needed for compatibility with Closure Compiler.\n var nativeGetter = desc.get;\n var nativeCbDesc = {\n configurable: desc.configurable,\n enumerable: desc.enumerable,\n get: nativeGetter,\n set: function (state) {\n desc.set.call(nativeCb, state);\n _this.foundation.handleChange();\n }\n };\n Object.defineProperty(nativeCb, controlState, nativeCbDesc);\n };\n try {\n for (var CB_PROTO_PROPS_1 = __values(CB_PROTO_PROPS), CB_PROTO_PROPS_1_1 = CB_PROTO_PROPS_1.next(); !CB_PROTO_PROPS_1_1.done; CB_PROTO_PROPS_1_1 = CB_PROTO_PROPS_1.next()) {\n var controlState = CB_PROTO_PROPS_1_1.value;\n var state_1 = _loop_1(controlState);\n if (typeof state_1 === \"object\") return state_1.value;\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (CB_PROTO_PROPS_1_1 && !CB_PROTO_PROPS_1_1.done && (_a = CB_PROTO_PROPS_1.return)) _a.call(CB_PROTO_PROPS_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n MDCCheckbox.prototype.uninstallPropertyChangeHooks = function () {\n var e_2, _a;\n var nativeCb = this.getNativeControl();\n var cbProto = Object.getPrototypeOf(nativeCb);\n try {\n for (var CB_PROTO_PROPS_2 = __values(CB_PROTO_PROPS), CB_PROTO_PROPS_2_1 = CB_PROTO_PROPS_2.next(); !CB_PROTO_PROPS_2_1.done; CB_PROTO_PROPS_2_1 = CB_PROTO_PROPS_2.next()) {\n var controlState = CB_PROTO_PROPS_2_1.value;\n var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);\n if (!validDescriptor(desc)) {\n return;\n }\n Object.defineProperty(nativeCb, controlState, desc);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (CB_PROTO_PROPS_2_1 && !CB_PROTO_PROPS_2_1.done && (_a = CB_PROTO_PROPS_2.return)) _a.call(CB_PROTO_PROPS_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n };\n MDCCheckbox.prototype.getNativeControl = function () {\n var NATIVE_CONTROL_SELECTOR = strings.NATIVE_CONTROL_SELECTOR;\n var el = this.root.querySelector(NATIVE_CONTROL_SELECTOR);\n if (!el) {\n throw new Error(\"Checkbox component requires a \" + NATIVE_CONTROL_SELECTOR + \" element\");\n }\n return el;\n };\n return MDCCheckbox;\n}(MDCComponent);\nexport { MDCCheckbox };\nfunction validDescriptor(inputPropDesc) {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n}","import {add_listener_once} from 'lib/interactions'\n\nimport {Chart, BarElement, LinearScale, CategoryScale, PointElement, BarController, Filler, Legend, Title, Tooltip } from 'chart.js'\nChart.register(BarElement, LinearScale, CategoryScale, PointElement, BarController, Filler, Legend, Title, Tooltip)\n\nclass DividendSeriesGraph\n constructor: (div) ->\n @div = div\n id = div.dataset.id\n @downloadAndRenderGraph(id) if id\n\n downloadAndRenderGraph: (id) ->\n fetch(\"/admin/dividend_series/#{id}/graph.json\").then (response) => response.json().then (json) =>\n @dividendsGraph(json['d']['v'], json['d']['l'], json['d']['t'])\n\n dividendsGraph: (v,l,t,h) ->\n ctx = @div.getContext('2d')\n new Chart ctx,\n type: 'bar',\n data:\n labels: l\n datasets: v\n options:\n responsive: true\n title:\n display: true\n text: document.querySelector('h1').innerText\n fontColor: '#3c62ec'\n fontFamily: \"'Lato', 'sans-serif'\"\n fontSize: 14\n scales:\n x:\n stacked: true\n y:\n stacked: true\n ticks:\n beginAtZero: true\n tooltips: \n callbacks:\n label: (item, data) ->\n t[item.index][item.datasetIndex]\n\nexport add_dividend_series_graph = ->\n [].map.call document.querySelectorAll('.dividend-series-graph'), (el) -> add_listener_once(el, (el) -> new DividendSeriesGraph(el))","import {xhr} from 'lib/requests'\nimport {FlashMessage} from 'components/flash'\nimport {reload_issues_tab, reload_dividends_tab} from 'components/tabs'\nimport {loading_div} from 'components/loading'\nimport {show_loading_div} from 'components/loading'\nimport {set_analyst_flag_status} from 'analyst_flag_dialog'\nimport {add_listener_once} from 'lib/interactions'\n\nexport prepare_security = ->\n [].map.call document.querySelectorAll('a.task-panel-run-checks'), (el) -> add_listener_once(el, (el) -> add_run_checks_button_listener(el))\n [].map.call document.querySelectorAll('a.task-panel-change-dividends'), (el) -> add_listener_once(el, (el) -> add_change_panel_button_listener(el))\n [].map.call document.querySelectorAll('table#share-dividends.client-view tr'), (el) -> add_listener_once(el, (el) -> add_dividend_table_client_view_click_listener(el))\n [].map.call document.querySelectorAll('a.security-reviewed-button'), (el) -> add_listener_once(el, (el) -> add_security_reviewed_button_listener(el))\n [].map.call document.querySelectorAll('.show-add-price-form'), (el) -> add_listener_once(el, (el) -> add_new_share_price_button_listener(el))\n [].map.call document.querySelectorAll('.analyst-note .content'), (el) -> add_listener_once(el, (el) -> toggle_note_expanded(el))\n [].map.call document.querySelectorAll('textarea#analyst_note_content'), (el) -> add_listener_once(el, (el) -> expand_note_input_box(el))\n\nadd_run_checks_button_listener = (el) ->\n el.addEventListener 'click', (e) ->\n e.preventDefault()\n FlashMessage.success \"Queuing analyst tasks\"\n xhr el.getAttribute('href'), 'POST', null, -> \n reload_issues_tab()\n setTimeout reload_issues_tab, 2000\n\n\nadd_change_panel_button_listener = (el) ->\n el.addEventListener 'click', (e) ->\n e.preventDefault()\n FlashMessage.success \"Creating draft series\"\n xhr el.getAttribute('href'), 'POST', null, -> reload_dividends_tab()\n\n\nadd_dividend_table_client_view_click_listener = (el) ->\n el.addEventListener 'click', (e) ->\n e.preventDefault()\n selector = \"table#share-dividends tr.d#{el.dataset.dividend}\"\n if el.classList.contains 'expanded'\n tr.classList.remove('expanded') for tr in document.querySelectorAll(selector)\n else\n tr.classList.add('expanded') for tr in document.querySelectorAll(selector)\n\n\nadd_security_reviewed_button_listener = (el) ->\n el.addEventListener 'click', (e) ->\n e.preventDefault()\n xhr el.getAttribute('href'), 'POST', null, (response) -> response.json().then (json) ->\n set_analyst_flag_status json\n\n\nadd_new_share_price_button_listener = (el) ->\n el.addEventListener 'click', -> document.querySelector('#new_share_price').classList.remove 'hidden'\n\ntoggle_note_expanded = (el) ->\n el.addEventListener 'click', -> el.classList.toggle('expanded')\n\nexpand_note_input_box = (el) ->\n el.addEventListener 'focus', -> el.classList.add('expanded')","import {xhr} from 'lib/requests'\nimport {form_params} from 'components/forms'\nimport {element_with_class, element_with_content} from 'components/common_elements'\nimport {submit_button, link_button} from 'components/material_elements'\nimport {FlashMessage} from 'components/flash'\nimport {Popup} from 'components/popup'\n\nissue_popup = null\nissue_form = null\nissue_button = null\n\nexport prepare_report_issue_form = ->\n [].map.call document.querySelectorAll('a.report-issue'), (el) ->\n issue_button = el\n issue_button.addEventListener 'click', (e) ->\n e.preventDefault()\n show_report_issue_form()\n\nshow_report_issue_form = ->\n issue_popup = new Popup()\n issue_popup.buildFromContent report_issue_form()\n\nreport_issue_form = ->\n issue_form = element_with_class('form', 'report-security-form', 'styled')\n issue_form.append element_with_content('h2', 'Report an issue with this security or a particular task')\n issue_form.append report_issue_input()\n issue_form.append report_issue_buttons()\n issue_form\n\nreport_issue_input = ->\n div = element_with_class('div', 'input')\n div.append element_with_content('label', 'Describe the issue')\n div.append report_issue_textarea()\n div\n\nreport_issue_textarea = ->\n input = document.createElement('textarea')\n input.setAttribute('name', 'note')\n input.setAttribute('id', 'issue_note')\n input\n\nreport_issue_buttons = ->\n div = element_with_class('div', 'buttons')\n div.append report_issue_submit_button()\n div.append report_issue_cancel_button()\n div\n\nreport_issue_submit_button = ->\n button = submit_button('Report Issue', true, true)\n button.addEventListener 'click', submit_issue_form\n button\n\nreport_issue_cancel_button = ->\n button = link_button('Cancel', '#')\n button.addEventListener 'click', -> issue_popup.removePopup()\n button\n\nsubmit_issue_form = (e) ->\n e.preventDefault()\n xhr issue_button.getAttribute('href'), 'POST', form_params(issue_form), ->\n FlashMessage.success(\"Successfully submitted this security for review\")\n issue_popup.removePopup()","import {MDCRipple} from '@material/ripple'\nimport {MDCTextField} from '@material/textfield'\nimport {MDCTabBar} from '@material/tab-bar'\nimport {MDCTabIndicator} from '@material/tab-indicator'\nimport {MDCCheckbox} from '@material/checkbox'\nimport TomSelect from 'tom-select'\nimport {DateTime} from \"luxon\"\nimport {add_date_pickers} from 'components/date_picker'\nimport {params_with_csrf_token} from 'components/forms'\nimport {find_parent_element} from 'lib/dom_search'\nimport {xhr} from 'lib/requests'\nimport {prepare_form_listeners, add_listener_once} from 'lib/interactions'\nimport {add_listener_to_confidence_level_buttons} from 'publish_series'\nimport {add_dividend_series_graph} from 'components/dividend_series_graph'\nimport {add_share_price_button_listener} from 'components/tabs'\nimport {prepare_date_rules} from 'date_rules'\nimport {prepare_dividend_series_mananger} from 'components/dividend_series_manager'\nimport {prepare_dividend_manager} from 'components/security_dividends_manager'\nimport {prepare_security} from 'security'\nimport {prepare_report_issue_form} from 'components/report_issue_form'\nimport {prepare_header_menu} from 'components/top_app_bar'\nimport {FlashMessage} from 'components/flash'\n\nselector = '.mdc-button, .mdc-icon-button, .mdc-card__primary-action'\n[].map.call document.querySelectorAll(selector), (el) -> new MDCRipple(el)\n[].map.call document.querySelectorAll('.mdc-text-field'), (el) -> new MDCTextField(el)\n[].map.call document.querySelectorAll('.mdc-tab-indicator'), (el) -> new MDCTabIndicator(el)\n[].map.call document.querySelectorAll('.mdc-checkbox'), (el) -> new MDCCheckbox(el)\n[].map.call document.querySelectorAll('header .mdc-tab-bar'), (el) -> new MDCTabBar(el)\n\nprepare_load_on_select = (element) ->\n select = new mdc.select.MDCSelect(element)\n select.listen 'MDCSelect:change', ->\n url = element.dataset.url.replaceAll('{{selection}}', select.value)\n document.location = url\n\n[].map.call document.querySelectorAll('.mdc-select.load-on-select'), (el) -> prepare_load_on_select(el)\n\nexport tom_selected_elements = []\n\nexport prepare_selects = ->\n [].map.call document.querySelectorAll('select.select2'), (el) -> \n unless el.classList.contains 'tomselected'\n if el.classList.contains 'select2-multiple'\n tom_selected_elements.push(new TomSelect(el, {maxOptions: null, maxItems: null, hidePlaceholder: true, closeAfterSelect: true, plugins: ['remove_button']}))\n else\n tom_selected_elements.push(new TomSelect(el, {maxOptions: null, maxItems: 1, hidePlaceholder: true, closeAfterSelect: true}))\n\nexport remove_selects = ->\n while tom_selected_elements.length > 0\n select = tom_selected_elements.pop()\n select.destroy()\n\nexport prepare_post_load = ->\n prepare_selects()\n add_date_pickers()\n prepare_form_listeners()\n add_listener_to_confidence_level_buttons()\n add_dividend_series_graph()\n prepare_date_rules()\n prepare_dividend_series_mananger()\n prepare_dividend_manager()\n prepare_security()\n prepare_report_issue_form()\n prepare_header_menu()\n\ndocument.addEventListener \"DOMContentLoaded\", -> prepare_post_load()","import {element_with_content, element_with_class} from 'components/common_elements'\n\nexport show_loading_div = (element = null) ->\n (element or document.body).append loading_div()\n \nexport loading_div = ->\n el = element_with_content('div', element_with_class('div', 'overlay-opacity'), 'loading-tab', 'overlay')\n el.append loadingAnimation()\n el\n\nexport loading_div_with_message = (message) ->\n el = loading_div()\n el.append element_with_content('div', message, 'status-message')\n el\n\nexport loading_icon = ->\n element_with_content('i', '', \"loading-icon\", \"material-icons\", \"small\", \"on\")\n\nexport updateLoadingMessage = (message) ->\n el = document.querySelector('.overlay .status-message')\n el.innerText = message if el\n\nexport loadingAnimation = ->\n element_with_content('div', element_with_content('div', '', 'material-icons', 'loading-icon', 'on'), 'loading-icon-wrap')","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { applyPassive } from '@material/dom/events';\nimport { matches } from '@material/dom/ponyfill';\nimport { MDCRippleFoundation } from './foundation';\nimport * as util from './util';\nvar MDCRipple = /** @class */function (_super) {\n __extends(MDCRipple, _super);\n function MDCRipple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.disabled = false;\n return _this;\n }\n MDCRipple.attachTo = function (root, opts) {\n if (opts === void 0) {\n opts = {\n isUnbounded: undefined\n };\n }\n var ripple = new MDCRipple(root);\n // Only override unbounded behavior if option is explicitly specified\n if (opts.isUnbounded !== undefined) {\n ripple.unbounded = opts.isUnbounded;\n }\n return ripple;\n };\n MDCRipple.createAdapter = function (instance) {\n return {\n addClass: function (className) {\n return instance.root.classList.add(className);\n },\n browserSupportsCssVars: function () {\n return util.supportsCssVariables(window);\n },\n computeBoundingRect: function () {\n return instance.root.getBoundingClientRect();\n },\n containsEventTarget: function (target) {\n return instance.root.contains(target);\n },\n deregisterDocumentInteractionHandler: function (evtType, handler) {\n return document.documentElement.removeEventListener(evtType, handler, applyPassive());\n },\n deregisterInteractionHandler: function (evtType, handler) {\n return instance.root.removeEventListener(evtType, handler, applyPassive());\n },\n deregisterResizeHandler: function (handler) {\n return window.removeEventListener('resize', handler);\n },\n getWindowPageOffset: function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n },\n isSurfaceActive: function () {\n return matches(instance.root, ':active');\n },\n isSurfaceDisabled: function () {\n return Boolean(instance.disabled);\n },\n isUnbounded: function () {\n return Boolean(instance.unbounded);\n },\n registerDocumentInteractionHandler: function (evtType, handler) {\n return document.documentElement.addEventListener(evtType, handler, applyPassive());\n },\n registerInteractionHandler: function (evtType, handler) {\n return instance.root.addEventListener(evtType, handler, applyPassive());\n },\n registerResizeHandler: function (handler) {\n return window.addEventListener('resize', handler);\n },\n removeClass: function (className) {\n return instance.root.classList.remove(className);\n },\n updateCssVariable: function (varName, value) {\n return instance.root.style.setProperty(varName, value);\n }\n };\n };\n Object.defineProperty(MDCRipple.prototype, \"unbounded\", {\n get: function () {\n return Boolean(this.isUnbounded);\n },\n set: function (unbounded) {\n this.isUnbounded = Boolean(unbounded);\n this.setUnbounded();\n },\n enumerable: false,\n configurable: true\n });\n MDCRipple.prototype.activate = function () {\n this.foundation.activate();\n };\n MDCRipple.prototype.deactivate = function () {\n this.foundation.deactivate();\n };\n MDCRipple.prototype.layout = function () {\n this.foundation.layout();\n };\n MDCRipple.prototype.getDefaultFoundation = function () {\n return new MDCRippleFoundation(MDCRipple.createAdapter(this));\n };\n MDCRipple.prototype.initialSyncWithDOM = function () {\n var root = this.root;\n this.isUnbounded = 'mdcRippleIsUnbounded' in root.dataset;\n };\n /**\n * Closure Compiler throws an access control error when directly accessing a\n * protected or private property inside a getter/setter, like unbounded above.\n * By accessing the protected property inside a method, we solve that problem.\n * That's why this function exists.\n */\n MDCRipple.prototype.setUnbounded = function () {\n this.foundation.setUnbounded(Boolean(this.isUnbounded));\n };\n return MDCRipple;\n}(MDCComponent);\nexport { MDCRipple };","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nexport var cssClasses = {\n // Ripple is a special case where the \"root\" component is really a \"mixin\" of sorts,\n // given that it's an 'upgrade' to an existing component. That being said it is the root\n // CSS class that all other CSS classes derive from.\n BG_FOCUSED: 'mdc-ripple-upgraded--background-focused',\n FG_ACTIVATION: 'mdc-ripple-upgraded--foreground-activation',\n FG_DEACTIVATION: 'mdc-ripple-upgraded--foreground-deactivation',\n ROOT: 'mdc-ripple-upgraded',\n UNBOUNDED: 'mdc-ripple-upgraded--unbounded'\n};\nexport var strings = {\n VAR_FG_SCALE: '--mdc-ripple-fg-scale',\n VAR_FG_SIZE: '--mdc-ripple-fg-size',\n VAR_FG_TRANSLATE_END: '--mdc-ripple-fg-translate-end',\n VAR_FG_TRANSLATE_START: '--mdc-ripple-fg-translate-start',\n VAR_LEFT: '--mdc-ripple-left',\n VAR_TOP: '--mdc-ripple-top'\n};\nexport var numbers = {\n DEACTIVATION_TIMEOUT_MS: 225,\n FG_DEACTIVATION_MS: 150,\n INITIAL_ORIGIN_SCALE: 0.6,\n PADDING: 10,\n TAP_DELAY_MS: 300 // Delay between touch and simulated mouse events on touch devices\n};","/**\n * @license\n * Copyright 2016 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends, __values } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nimport { getNormalizedEventCoords } from './util';\n// Activation events registered on the root element of each instance for activation\nvar ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown'];\n// Deactivation events registered on documentElement when a pointer-related down event occurs\nvar POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu'];\n// simultaneous nested activations\nvar activatedTargets = [];\nvar MDCRippleFoundation = /** @class */function (_super) {\n __extends(MDCRippleFoundation, _super);\n function MDCRippleFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCRippleFoundation.defaultAdapter), adapter)) || this;\n _this.activationAnimationHasEnded = false;\n _this.activationTimer = 0;\n _this.fgDeactivationRemovalTimer = 0;\n _this.fgScale = '0';\n _this.frame = {\n width: 0,\n height: 0\n };\n _this.initialSize = 0;\n _this.layoutFrame = 0;\n _this.maxRadius = 0;\n _this.unboundedCoords = {\n left: 0,\n top: 0\n };\n _this.activationState = _this.defaultActivationState();\n _this.activationTimerCallback = function () {\n _this.activationAnimationHasEnded = true;\n _this.runDeactivationUXLogicIfReady();\n };\n _this.activateHandler = function (e) {\n _this.activateImpl(e);\n };\n _this.deactivateHandler = function () {\n _this.deactivateImpl();\n };\n _this.focusHandler = function () {\n _this.handleFocus();\n };\n _this.blurHandler = function () {\n _this.handleBlur();\n };\n _this.resizeHandler = function () {\n _this.layout();\n };\n return _this;\n }\n Object.defineProperty(MDCRippleFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addClass: function () {\n return undefined;\n },\n browserSupportsCssVars: function () {\n return true;\n },\n computeBoundingRect: function () {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: 0,\n height: 0\n };\n },\n containsEventTarget: function () {\n return true;\n },\n deregisterDocumentInteractionHandler: function () {\n return undefined;\n },\n deregisterInteractionHandler: function () {\n return undefined;\n },\n deregisterResizeHandler: function () {\n return undefined;\n },\n getWindowPageOffset: function () {\n return {\n x: 0,\n y: 0\n };\n },\n isSurfaceActive: function () {\n return true;\n },\n isSurfaceDisabled: function () {\n return true;\n },\n isUnbounded: function () {\n return true;\n },\n registerDocumentInteractionHandler: function () {\n return undefined;\n },\n registerInteractionHandler: function () {\n return undefined;\n },\n registerResizeHandler: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n updateCssVariable: function () {\n return undefined;\n }\n };\n },\n enumerable: false,\n configurable: true\n });\n MDCRippleFoundation.prototype.init = function () {\n var _this = this;\n var supportsPressRipple = this.supportsPressRipple();\n this.registerRootHandlers(supportsPressRipple);\n if (supportsPressRipple) {\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_1 = _a.ROOT,\n UNBOUNDED_1 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter.addClass(ROOT_1);\n if (_this.adapter.isUnbounded()) {\n _this.adapter.addClass(UNBOUNDED_1);\n // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n _this.layoutInternal();\n }\n });\n }\n };\n MDCRippleFoundation.prototype.destroy = function () {\n var _this = this;\n if (this.supportsPressRipple()) {\n if (this.activationTimer) {\n clearTimeout(this.activationTimer);\n this.activationTimer = 0;\n this.adapter.removeClass(MDCRippleFoundation.cssClasses.FG_ACTIVATION);\n }\n if (this.fgDeactivationRemovalTimer) {\n clearTimeout(this.fgDeactivationRemovalTimer);\n this.fgDeactivationRemovalTimer = 0;\n this.adapter.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);\n }\n var _a = MDCRippleFoundation.cssClasses,\n ROOT_2 = _a.ROOT,\n UNBOUNDED_2 = _a.UNBOUNDED;\n requestAnimationFrame(function () {\n _this.adapter.removeClass(ROOT_2);\n _this.adapter.removeClass(UNBOUNDED_2);\n _this.removeCssVars();\n });\n }\n this.deregisterRootHandlers();\n this.deregisterDeactivationHandlers();\n };\n /**\n * @param evt Optional event containing position information.\n */\n MDCRippleFoundation.prototype.activate = function (evt) {\n this.activateImpl(evt);\n };\n MDCRippleFoundation.prototype.deactivate = function () {\n this.deactivateImpl();\n };\n MDCRippleFoundation.prototype.layout = function () {\n var _this = this;\n if (this.layoutFrame) {\n cancelAnimationFrame(this.layoutFrame);\n }\n this.layoutFrame = requestAnimationFrame(function () {\n _this.layoutInternal();\n _this.layoutFrame = 0;\n });\n };\n MDCRippleFoundation.prototype.setUnbounded = function (unbounded) {\n var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;\n if (unbounded) {\n this.adapter.addClass(UNBOUNDED);\n } else {\n this.adapter.removeClass(UNBOUNDED);\n }\n };\n MDCRippleFoundation.prototype.handleFocus = function () {\n var _this = this;\n requestAnimationFrame(function () {\n return _this.adapter.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n MDCRippleFoundation.prototype.handleBlur = function () {\n var _this = this;\n requestAnimationFrame(function () {\n return _this.adapter.removeClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n /**\n * We compute this property so that we are not querying information about the client\n * until the point in time where the foundation requests it. This prevents scenarios where\n * client-side feature-detection may happen too early, such as when components are rendered on the server\n * and then initialized at mount time on the client.\n */\n MDCRippleFoundation.prototype.supportsPressRipple = function () {\n return this.adapter.browserSupportsCssVars();\n };\n MDCRippleFoundation.prototype.defaultActivationState = function () {\n return {\n activationEvent: undefined,\n hasDeactivationUXRun: false,\n isActivated: false,\n isProgrammatic: false,\n wasActivatedByPointer: false,\n wasElementMadeActive: false\n };\n };\n /**\n * supportsPressRipple Passed from init to save a redundant function call\n */\n MDCRippleFoundation.prototype.registerRootHandlers = function (supportsPressRipple) {\n var e_1, _a;\n if (supportsPressRipple) {\n try {\n for (var ACTIVATION_EVENT_TYPES_1 = __values(ACTIVATION_EVENT_TYPES), ACTIVATION_EVENT_TYPES_1_1 = ACTIVATION_EVENT_TYPES_1.next(); !ACTIVATION_EVENT_TYPES_1_1.done; ACTIVATION_EVENT_TYPES_1_1 = ACTIVATION_EVENT_TYPES_1.next()) {\n var evtType = ACTIVATION_EVENT_TYPES_1_1.value;\n this.adapter.registerInteractionHandler(evtType, this.activateHandler);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (ACTIVATION_EVENT_TYPES_1_1 && !ACTIVATION_EVENT_TYPES_1_1.done && (_a = ACTIVATION_EVENT_TYPES_1.return)) _a.call(ACTIVATION_EVENT_TYPES_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n if (this.adapter.isUnbounded()) {\n this.adapter.registerResizeHandler(this.resizeHandler);\n }\n }\n this.adapter.registerInteractionHandler('focus', this.focusHandler);\n this.adapter.registerInteractionHandler('blur', this.blurHandler);\n };\n MDCRippleFoundation.prototype.registerDeactivationHandlers = function (evt) {\n var e_2, _a;\n if (evt.type === 'keydown') {\n this.adapter.registerInteractionHandler('keyup', this.deactivateHandler);\n } else {\n try {\n for (var POINTER_DEACTIVATION_EVENT_TYPES_1 = __values(POINTER_DEACTIVATION_EVENT_TYPES), POINTER_DEACTIVATION_EVENT_TYPES_1_1 = POINTER_DEACTIVATION_EVENT_TYPES_1.next(); !POINTER_DEACTIVATION_EVENT_TYPES_1_1.done; POINTER_DEACTIVATION_EVENT_TYPES_1_1 = POINTER_DEACTIVATION_EVENT_TYPES_1.next()) {\n var evtType = POINTER_DEACTIVATION_EVENT_TYPES_1_1.value;\n this.adapter.registerDocumentInteractionHandler(evtType, this.deactivateHandler);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (POINTER_DEACTIVATION_EVENT_TYPES_1_1 && !POINTER_DEACTIVATION_EVENT_TYPES_1_1.done && (_a = POINTER_DEACTIVATION_EVENT_TYPES_1.return)) _a.call(POINTER_DEACTIVATION_EVENT_TYPES_1);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n }\n };\n MDCRippleFoundation.prototype.deregisterRootHandlers = function () {\n var e_3, _a;\n try {\n for (var ACTIVATION_EVENT_TYPES_2 = __values(ACTIVATION_EVENT_TYPES), ACTIVATION_EVENT_TYPES_2_1 = ACTIVATION_EVENT_TYPES_2.next(); !ACTIVATION_EVENT_TYPES_2_1.done; ACTIVATION_EVENT_TYPES_2_1 = ACTIVATION_EVENT_TYPES_2.next()) {\n var evtType = ACTIVATION_EVENT_TYPES_2_1.value;\n this.adapter.deregisterInteractionHandler(evtType, this.activateHandler);\n }\n } catch (e_3_1) {\n e_3 = {\n error: e_3_1\n };\n } finally {\n try {\n if (ACTIVATION_EVENT_TYPES_2_1 && !ACTIVATION_EVENT_TYPES_2_1.done && (_a = ACTIVATION_EVENT_TYPES_2.return)) _a.call(ACTIVATION_EVENT_TYPES_2);\n } finally {\n if (e_3) throw e_3.error;\n }\n }\n this.adapter.deregisterInteractionHandler('focus', this.focusHandler);\n this.adapter.deregisterInteractionHandler('blur', this.blurHandler);\n if (this.adapter.isUnbounded()) {\n this.adapter.deregisterResizeHandler(this.resizeHandler);\n }\n };\n MDCRippleFoundation.prototype.deregisterDeactivationHandlers = function () {\n var e_4, _a;\n this.adapter.deregisterInteractionHandler('keyup', this.deactivateHandler);\n try {\n for (var POINTER_DEACTIVATION_EVENT_TYPES_2 = __values(POINTER_DEACTIVATION_EVENT_TYPES), POINTER_DEACTIVATION_EVENT_TYPES_2_1 = POINTER_DEACTIVATION_EVENT_TYPES_2.next(); !POINTER_DEACTIVATION_EVENT_TYPES_2_1.done; POINTER_DEACTIVATION_EVENT_TYPES_2_1 = POINTER_DEACTIVATION_EVENT_TYPES_2.next()) {\n var evtType = POINTER_DEACTIVATION_EVENT_TYPES_2_1.value;\n this.adapter.deregisterDocumentInteractionHandler(evtType, this.deactivateHandler);\n }\n } catch (e_4_1) {\n e_4 = {\n error: e_4_1\n };\n } finally {\n try {\n if (POINTER_DEACTIVATION_EVENT_TYPES_2_1 && !POINTER_DEACTIVATION_EVENT_TYPES_2_1.done && (_a = POINTER_DEACTIVATION_EVENT_TYPES_2.return)) _a.call(POINTER_DEACTIVATION_EVENT_TYPES_2);\n } finally {\n if (e_4) throw e_4.error;\n }\n }\n };\n MDCRippleFoundation.prototype.removeCssVars = function () {\n var _this = this;\n var rippleStrings = MDCRippleFoundation.strings;\n var keys = Object.keys(rippleStrings);\n keys.forEach(function (key) {\n if (key.indexOf('VAR_') === 0) {\n _this.adapter.updateCssVariable(rippleStrings[key], null);\n }\n });\n };\n MDCRippleFoundation.prototype.activateImpl = function (evt) {\n var _this = this;\n if (this.adapter.isSurfaceDisabled()) {\n return;\n }\n var activationState = this.activationState;\n if (activationState.isActivated) {\n return;\n }\n // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction\n var previousActivationEvent = this.previousActivationEvent;\n var isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type;\n if (isSameInteraction) {\n return;\n }\n activationState.isActivated = true;\n activationState.isProgrammatic = evt === undefined;\n activationState.activationEvent = evt;\n activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && (evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown');\n var hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some(function (target) {\n return _this.adapter.containsEventTarget(target);\n });\n if (hasActivatedChild) {\n // Immediately reset activation state, while preserving logic that prevents touch follow-on events\n this.resetActivationState();\n return;\n }\n if (evt !== undefined) {\n activatedTargets.push(evt.target);\n this.registerDeactivationHandlers(evt);\n }\n activationState.wasElementMadeActive = this.checkElementMadeActive(evt);\n if (activationState.wasElementMadeActive) {\n this.animateActivation();\n }\n requestAnimationFrame(function () {\n // Reset array on next frame after the current event has had a chance to bubble to prevent ancestor ripples\n activatedTargets = [];\n if (!activationState.wasElementMadeActive && evt !== undefined && (evt.key === ' ' || evt.keyCode === 32)) {\n // If space was pressed, try again within an rAF call to detect :active, because different UAs report\n // active states inconsistently when they're called within event handling code:\n // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741\n // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS\n // variable is set within a rAF callback for a submit button interaction (#2241).\n activationState.wasElementMadeActive = _this.checkElementMadeActive(evt);\n if (activationState.wasElementMadeActive) {\n _this.animateActivation();\n }\n }\n if (!activationState.wasElementMadeActive) {\n // Reset activation state immediately if element was not made active.\n _this.activationState = _this.defaultActivationState();\n }\n });\n };\n MDCRippleFoundation.prototype.checkElementMadeActive = function (evt) {\n return evt !== undefined && evt.type === 'keydown' ? this.adapter.isSurfaceActive() : true;\n };\n MDCRippleFoundation.prototype.animateActivation = function () {\n var _this = this;\n var _a = MDCRippleFoundation.strings,\n VAR_FG_TRANSLATE_START = _a.VAR_FG_TRANSLATE_START,\n VAR_FG_TRANSLATE_END = _a.VAR_FG_TRANSLATE_END;\n var _b = MDCRippleFoundation.cssClasses,\n FG_DEACTIVATION = _b.FG_DEACTIVATION,\n FG_ACTIVATION = _b.FG_ACTIVATION;\n var DEACTIVATION_TIMEOUT_MS = MDCRippleFoundation.numbers.DEACTIVATION_TIMEOUT_MS;\n this.layoutInternal();\n var translateStart = '';\n var translateEnd = '';\n if (!this.adapter.isUnbounded()) {\n var _c = this.getFgTranslationCoordinates(),\n startPoint = _c.startPoint,\n endPoint = _c.endPoint;\n translateStart = startPoint.x + \"px, \" + startPoint.y + \"px\";\n translateEnd = endPoint.x + \"px, \" + endPoint.y + \"px\";\n }\n this.adapter.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);\n this.adapter.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd);\n // Cancel any ongoing activation/deactivation animations\n clearTimeout(this.activationTimer);\n clearTimeout(this.fgDeactivationRemovalTimer);\n this.rmBoundedActivationClasses();\n this.adapter.removeClass(FG_DEACTIVATION);\n // Force layout in order to re-trigger the animation.\n this.adapter.computeBoundingRect();\n this.adapter.addClass(FG_ACTIVATION);\n this.activationTimer = setTimeout(function () {\n _this.activationTimerCallback();\n }, DEACTIVATION_TIMEOUT_MS);\n };\n MDCRippleFoundation.prototype.getFgTranslationCoordinates = function () {\n var _a = this.activationState,\n activationEvent = _a.activationEvent,\n wasActivatedByPointer = _a.wasActivatedByPointer;\n var startPoint;\n if (wasActivatedByPointer) {\n startPoint = getNormalizedEventCoords(activationEvent, this.adapter.getWindowPageOffset(), this.adapter.computeBoundingRect());\n } else {\n startPoint = {\n x: this.frame.width / 2,\n y: this.frame.height / 2\n };\n }\n // Center the element around the start point.\n startPoint = {\n x: startPoint.x - this.initialSize / 2,\n y: startPoint.y - this.initialSize / 2\n };\n var endPoint = {\n x: this.frame.width / 2 - this.initialSize / 2,\n y: this.frame.height / 2 - this.initialSize / 2\n };\n return {\n startPoint: startPoint,\n endPoint: endPoint\n };\n };\n MDCRippleFoundation.prototype.runDeactivationUXLogicIfReady = function () {\n var _this = this;\n // This method is called both when a pointing device is released, and when the activation animation ends.\n // The deactivation animation should only run after both of those occur.\n var FG_DEACTIVATION = MDCRippleFoundation.cssClasses.FG_DEACTIVATION;\n var _a = this.activationState,\n hasDeactivationUXRun = _a.hasDeactivationUXRun,\n isActivated = _a.isActivated;\n var activationHasEnded = hasDeactivationUXRun || !isActivated;\n if (activationHasEnded && this.activationAnimationHasEnded) {\n this.rmBoundedActivationClasses();\n this.adapter.addClass(FG_DEACTIVATION);\n this.fgDeactivationRemovalTimer = setTimeout(function () {\n _this.adapter.removeClass(FG_DEACTIVATION);\n }, numbers.FG_DEACTIVATION_MS);\n }\n };\n MDCRippleFoundation.prototype.rmBoundedActivationClasses = function () {\n var FG_ACTIVATION = MDCRippleFoundation.cssClasses.FG_ACTIVATION;\n this.adapter.removeClass(FG_ACTIVATION);\n this.activationAnimationHasEnded = false;\n this.adapter.computeBoundingRect();\n };\n MDCRippleFoundation.prototype.resetActivationState = function () {\n var _this = this;\n this.previousActivationEvent = this.activationState.activationEvent;\n this.activationState = this.defaultActivationState();\n // Touch devices may fire additional events for the same interaction within a short time.\n // Store the previous event until it's safe to assume that subsequent events are for new interactions.\n setTimeout(function () {\n return _this.previousActivationEvent = undefined;\n }, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n };\n MDCRippleFoundation.prototype.deactivateImpl = function () {\n var _this = this;\n var activationState = this.activationState;\n // This can happen in scenarios such as when you have a keyup event that blurs the element.\n if (!activationState.isActivated) {\n return;\n }\n var state = __assign({}, activationState);\n if (activationState.isProgrammatic) {\n requestAnimationFrame(function () {\n _this.animateDeactivation(state);\n });\n this.resetActivationState();\n } else {\n this.deregisterDeactivationHandlers();\n requestAnimationFrame(function () {\n _this.activationState.hasDeactivationUXRun = true;\n _this.animateDeactivation(state);\n _this.resetActivationState();\n });\n }\n };\n MDCRippleFoundation.prototype.animateDeactivation = function (_a) {\n var wasActivatedByPointer = _a.wasActivatedByPointer,\n wasElementMadeActive = _a.wasElementMadeActive;\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady();\n }\n };\n MDCRippleFoundation.prototype.layoutInternal = function () {\n var _this = this;\n this.frame = this.adapter.computeBoundingRect();\n var maxDim = Math.max(this.frame.height, this.frame.width);\n // Surface diameter is treated differently for unbounded vs. bounded ripples.\n // Unbounded ripple diameter is calculated smaller since the surface is expected to already be padded appropriately\n // to extend the hitbox, and the ripple is expected to meet the edges of the padded hitbox (which is typically\n // square). Bounded ripples, on the other hand, are fully expected to expand beyond the surface's longest diameter\n // (calculated based on the diagonal plus a constant padding), and are clipped at the surface's border via\n // `overflow: hidden`.\n var getBoundedRadius = function () {\n var hypotenuse = Math.sqrt(Math.pow(_this.frame.width, 2) + Math.pow(_this.frame.height, 2));\n return hypotenuse + MDCRippleFoundation.numbers.PADDING;\n };\n this.maxRadius = this.adapter.isUnbounded() ? maxDim : getBoundedRadius();\n // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform\n var initialSize = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE);\n // Unbounded ripple size should always be even number to equally center align.\n if (this.adapter.isUnbounded() && initialSize % 2 !== 0) {\n this.initialSize = initialSize - 1;\n } else {\n this.initialSize = initialSize;\n }\n this.fgScale = \"\" + this.maxRadius / this.initialSize;\n this.updateLayoutCssVars();\n };\n MDCRippleFoundation.prototype.updateLayoutCssVars = function () {\n var _a = MDCRippleFoundation.strings,\n VAR_FG_SIZE = _a.VAR_FG_SIZE,\n VAR_LEFT = _a.VAR_LEFT,\n VAR_TOP = _a.VAR_TOP,\n VAR_FG_SCALE = _a.VAR_FG_SCALE;\n this.adapter.updateCssVariable(VAR_FG_SIZE, this.initialSize + \"px\");\n this.adapter.updateCssVariable(VAR_FG_SCALE, this.fgScale);\n if (this.adapter.isUnbounded()) {\n this.unboundedCoords = {\n left: Math.round(this.frame.width / 2 - this.initialSize / 2),\n top: Math.round(this.frame.height / 2 - this.initialSize / 2)\n };\n this.adapter.updateCssVariable(VAR_LEFT, this.unboundedCoords.left + \"px\");\n this.adapter.updateCssVariable(VAR_TOP, this.unboundedCoords.top + \"px\");\n }\n };\n return MDCRippleFoundation;\n}(MDCFoundation);\nexport { MDCRippleFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCRippleFoundation;","import {MDCTextField} from '@material/textfield'\nimport {element_with_class, element_with_content} from 'components/common_elements'\n\nexport link_button = (label, url, raised, secondary, outlined) ->\n a = element_with_class('A', 'mdc-button')\n a.setAttribute('href', url)\n a.classList.add 'mdc-button--raised' if raised\n a.classList.add 'mdc-button--outlined' if outlined\n a.classList.add 'mdc-theme--secondary-bg' if secondary\n a.append element_with_class('DIV', 'mdc-button__ripple')\n span = element_with_class('SPAN', 'mdc-button__label')\n span.innerText = label\n a.append span\n a\n\nexport submit_button = (label, raised, secondary, outlined) ->\n button = element_with_class('button', 'mdc-button')\n button.classList.add 'mdc-button--raised' if raised\n button.classList.add 'mdc-theme--secondary-bg' if secondary\n button.classList.add 'mdc-button--outlined' if outlined\n button.append element_with_class('div', 'mdc-button__ripple')\n button.append element_with_content('span', label, 'mdc-button__label')\n button\n\nexport text_field = (label, name, value, extra_classes...) ->\n el = element_with_class('label', 'mdc-text-field', 'mdc-text-field--filled', extra_classes...)\n el.append element_with_class('span', 'mdc-text-field__ripple')\n input = element_with_class('input', 'mdc-text-field__input')\n input.setAttribute('label', label)\n input.setAttribute('type', 'text')\n input.setAttribute('name', name)\n input.value = value\n el.append input\n el.append element_with_content('span', label, 'mdc-floating-label')\n el.append element_with_class('span', 'mdc-line-ripple')\n el\n\nexport material_select_option = (label, value, selected) ->\n li = element_with_class('li', \"mdc-list-item\")\n li.dataset.value = value\n li.setAttribute('role', 'option')\n li.setAttribute('aria-selected', 'true') if selected\n li.append element_with_class('span', \"mdc-list-item__ripple\")\n li.append element_with_content('span', label, \"mdc-list-item__text\")\n li\n\nexport material_select = (label) ->\n select = element_with_class('div', 'mdc-select', 'mdc-select--filled')\n select.append select_anchor(label)\n\n menu = element_with_class('div', \"mdc-select__menu\", \"mdc-menu\", \"mdc-menu-surface\")\n ul = element_with_class('ul', 'mdc-list')\n ul.setAttribute('role', 'listbox')\n ul.setAttribute('aria-label', label)\n menu.append ul\n select.append menu\n select\n\nselect_anchor = (label) ->\n anchor = element_with_class('div', 'mdc-select__anchor')\n anchor.setAttribute('role', 'button')\n anchor.setAttribute('aria-haspopup', 'listbox')\n anchor.setAttribute('aria-expanded', 'false')\n anchor.append element_with_class('span', 'mdc-select__ripple')\n anchor.append element_with_content('span', label, 'mdc-floating-label')\n anchor.append element_with_class('span', 'mdc-select__selected-text')\n anchor.append dropdown_icon()\n anchor.append element_with_class('span', 'mdc-line-ripple')\n anchor\n\ndropdown_icon = ->\n svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n svg.classList.add \"mdc-select__dropdown-icon-graphic\"\n svg.setAttributeNS null, 'viewBox', \"7 10 10 5\"\n svg.setAttributeNS null, 'focusable', \"false\"\n inactive_polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon')\n inactive_polygon.classList.add \"mdc-select__dropdown-icon-inactive\"\n inactive_polygon.setAttributeNS null, 'stroke', \"none\"\n inactive_polygon.setAttributeNS null, 'fill-rule', \"evenodd\"\n inactive_polygon.setAttributeNS null, 'points', \"7 10 12 15 17 10\"\n\n active_polygon = document.createElementNS('http://www.w3.org/2000/svg', 'polygon')\n active_polygon.classList.add \"mdc-select__dropdown-icon-active\"\n active_polygon.setAttributeNS null, 'stroke', \"none\"\n active_polygon.setAttributeNS null, 'fill-rule', \"evenodd\"\n active_polygon.setAttributeNS null, 'points', \"7 15 12 10 17 15\"\n\n svg.appendChild inactive_polygon\n svg.appendChild active_polygon\n element_with_content('span', svg, \"mdc-select__dropdown-icon\")","/**\n* Tom Select v2.1.0\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n*/\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.TomSelect = factory());\n})(this, function () {\n 'use strict';\n\n /**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\n /**\n * Execute callback for each event in space separated list of event names\n *\n */\n function forEvents(events, callback) {\n events.split(/\\s+/).forEach(event => {\n callback(event);\n });\n }\n class MicroEvent {\n constructor() {\n this._events = void 0;\n this._events = {};\n }\n on(events, fct) {\n forEvents(events, event => {\n this._events[event] = this._events[event] || [];\n this._events[event].push(fct);\n });\n }\n off(events, fct) {\n var n = arguments.length;\n if (n === 0) {\n this._events = {};\n return;\n }\n forEvents(events, event => {\n if (n === 1) return delete this._events[event];\n if (event in this._events === false) return;\n this._events[event].splice(this._events[event].indexOf(fct), 1);\n });\n }\n trigger(events) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n var self = this;\n forEvents(events, event => {\n if (event in self._events === false) return;\n for (let fct of self._events[event]) {\n fct.apply(self, args);\n }\n });\n }\n }\n\n /**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis \n */\n function MicroPlugin(Interface) {\n Interface.plugins = {};\n return class extends Interface {\n constructor() {\n super(...arguments);\n this.plugins = {\n names: [],\n settings: {},\n requested: {},\n loaded: {}\n };\n }\n\n /**\n * Registers a plugin.\n *\n * @param {function} fn\n */\n static define(name, fn) {\n Interface.plugins[name] = {\n 'name': name,\n 'fn': fn\n };\n }\n /**\n * Initializes the listed plugins (with options).\n * Acceptable formats:\n *\n * List (without options):\n * ['a', 'b', 'c']\n *\n * List (with options):\n * [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n *\n * Hash (with options):\n * {'a': { ... }, 'b': { ... }, 'c': { ... }}\n *\n * @param {array|object} plugins\n */\n\n initializePlugins(plugins) {\n var key, name;\n const self = this;\n const queue = [];\n if (Array.isArray(plugins)) {\n plugins.forEach(plugin => {\n if (typeof plugin === 'string') {\n queue.push(plugin);\n } else {\n self.plugins.settings[plugin.name] = plugin.options;\n queue.push(plugin.name);\n }\n });\n } else if (plugins) {\n for (key in plugins) {\n if (plugins.hasOwnProperty(key)) {\n self.plugins.settings[key] = plugins[key];\n queue.push(key);\n }\n }\n }\n while (name = queue.shift()) {\n self.require(name);\n }\n }\n loadPlugin(name) {\n var self = this;\n var plugins = self.plugins;\n var plugin = Interface.plugins[name];\n if (!Interface.plugins.hasOwnProperty(name)) {\n throw new Error('Unable to find \"' + name + '\" plugin');\n }\n plugins.requested[name] = true;\n plugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n plugins.names.push(name);\n }\n /**\n * Initializes a plugin.\n *\n */\n\n require(name) {\n var self = this;\n var plugins = self.plugins;\n if (!self.plugins.loaded.hasOwnProperty(name)) {\n if (plugins.requested[name]) {\n throw new Error('Plugin has circular dependency (\"' + name + '\")');\n }\n self.loadPlugin(name);\n }\n return plugins.loaded[name];\n }\n };\n }\n\n // @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\n // https://github.com/andrewrk/node-diacritics/blob/master/index.js\n var latin_pat;\n const accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}]'; // \\u{2bc}\n\n const accent_reg = new RegExp(accent_pat, 'gu');\n var diacritic_patterns;\n const latin_convert = {\n 'æ': 'ae',\n 'ⱥ': 'a',\n 'ø': 'o'\n };\n const convert_pat = new RegExp(Object.keys(latin_convert).join('|'), 'gu');\n const code_points = [[0, 65535]];\n /**\n * Remove accents\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n *\n */\n\n const asciifold = str => {\n return str.normalize('NFKD').replace(accent_reg, '').toLowerCase().replace(convert_pat, function (foreignletter) {\n return latin_convert[foreignletter];\n });\n };\n /**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n *\n */\n\n const arrayToPattern = function (chars) {\n let glue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '|';\n if (chars.length == 1) {\n return chars[0];\n }\n var longest = 1;\n chars.forEach(a => {\n longest = Math.max(longest, a.length);\n });\n if (longest == 1) {\n return '[' + chars.join('') + ']';\n }\n return '(?:' + chars.join(glue) + ')';\n };\n const escapeToPattern = chars => {\n const escaped = chars.map(diacritic => escape_regex(diacritic));\n return arrayToPattern(escaped);\n };\n /**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n *\n */\n\n const allSubstrings = input => {\n if (input.length === 1) return [[input]];\n var result = [];\n allSubstrings(input.substring(1)).forEach(function (subresult) {\n var tmp = subresult.slice(0);\n tmp[0] = input.charAt(0) + tmp[0];\n result.push(tmp);\n tmp = subresult.slice(0);\n tmp.unshift(input.charAt(0));\n result.push(tmp);\n });\n return result;\n };\n /**\n * Generate a list of diacritics from the list of code points\n *\n */\n\n const generateDiacritics = code_points => {\n var diacritics = {};\n code_points.forEach(code_range => {\n for (let i = code_range[0]; i <= code_range[1]; i++) {\n let diacritic = String.fromCharCode(i);\n let latin = asciifold(diacritic);\n if (latin == diacritic.toLowerCase()) {\n continue;\n } // skip when latin is a string longer than 3 characters long\n // bc the resulting regex patterns will be long\n // eg:\n // latin صلى الله عليه وسلم length 18 code point 65018\n // latin جل جلاله length 8 code point 65019\n\n if (latin.length > 3) {\n continue;\n }\n if (!(latin in diacritics)) {\n diacritics[latin] = [latin];\n }\n var patt = new RegExp(escapeToPattern(diacritics[latin]), 'iu');\n if (diacritic.match(patt)) {\n continue;\n }\n diacritics[latin].push(diacritic);\n }\n }); // filter out if there's only one character in the list\n\n let latin_chars = Object.keys(diacritics);\n for (let i = 0; i < latin_chars.length; i++) {\n const latin = latin_chars[i];\n if (diacritics[latin].length < 2) {\n delete diacritics[latin];\n }\n } // latin character pattern\n // match longer substrings first\n\n latin_chars = Object.keys(diacritics).sort((a, b) => b.length - a.length);\n latin_pat = new RegExp('(' + escapeToPattern(latin_chars) + accent_pat + '*)', 'gu'); // build diacritic patterns\n // ae needs:\n //\t(?:(?:ae|Æ|Ǽ|Ǣ)|(?:A|Ⓐ|A...)(?:E|ɛ|Ⓔ...))\n\n var diacritic_patterns = {};\n latin_chars.sort((a, b) => a.length - b.length).forEach(latin => {\n var substrings = allSubstrings(latin);\n var pattern = substrings.map(sub_pat => {\n sub_pat = sub_pat.map(l => {\n if (diacritics.hasOwnProperty(l)) {\n return escapeToPattern(diacritics[l]);\n }\n return l;\n });\n return arrayToPattern(sub_pat, '');\n });\n diacritic_patterns[latin] = arrayToPattern(pattern);\n });\n return diacritic_patterns;\n };\n /**\n * Expand a regular expression pattern to include diacritics\n * \teg /a/ becomes /aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐɑAⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ/\n *\n */\n\n const diacriticRegexPoints = regex => {\n if (diacritic_patterns === undefined) {\n diacritic_patterns = generateDiacritics(code_points);\n }\n const decomposed = regex.normalize('NFKD').toLowerCase();\n return decomposed.split(latin_pat).map(part => {\n // \"ffl\" or \"ffl\"\n const no_accent = asciifold(part);\n if (no_accent == '') {\n return '';\n }\n if (diacritic_patterns.hasOwnProperty(no_accent)) {\n return diacritic_patterns[no_accent];\n }\n return part;\n }).join('');\n };\n\n // @ts-ignore TS2691 \"An import path cannot end with a '.ts' extension\"\n\n /**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\n const getAttr = (obj, name) => {\n if (!obj) return;\n return obj[name];\n };\n /**\n * A property getter resolving dot-notation\n * @param {Object} obj The root object to fetch property on\n * @param {String} name The optionally dotted property name to fetch\n * @return {Object} The resolved property value\n */\n\n const getAttrNesting = (obj, name) => {\n if (!obj) return;\n var part,\n names = name.split(\".\");\n while ((part = names.shift()) && (obj = obj[part]));\n return obj;\n };\n /**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\n\n const scoreValue = (value, token, weight) => {\n var score, pos;\n if (!value) return 0;\n value = value + '';\n pos = value.search(token.regex);\n if (pos === -1) return 0;\n score = token.string.length / value.length;\n if (pos === 0) score += 0.5;\n return score * weight;\n };\n /**\n *\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n */\n\n const escape_regex = str => {\n return (str + '').replace(/([\\$\\(-\\+\\.\\?\\[-\\^\\{-\\}])/g, '\\\\$1');\n };\n /**\n * Cast object property to an array if it exists and has a value\n *\n */\n\n const propToArray = (obj, key) => {\n var value = obj[key];\n if (typeof value == 'function') return value;\n if (value && !Array.isArray(value)) {\n obj[key] = [value];\n }\n };\n /**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n * // invoked for each item\n * });\n * ```\n *\n */\n\n const iterate = (object, callback) => {\n if (Array.isArray(object)) {\n object.forEach(callback);\n } else {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n callback(object[key], key);\n }\n }\n }\n };\n const cmp = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n a = asciifold(a + '').toLowerCase();\n b = asciifold(b + '').toLowerCase();\n if (a > b) return 1;\n if (b > a) return -1;\n return 0;\n };\n\n /**\n * sifter.js\n * Copyright (c) 2013–2020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis \n */\n\n class Sifter {\n // []|{};\n\n /**\n * Textually searches arrays and hashes of objects\n * by property (or multiple properties). Designed\n * specifically for autocomplete.\n *\n */\n constructor(items, settings) {\n this.items = void 0;\n this.settings = void 0;\n this.items = items;\n this.settings = settings || {\n diacritics: true\n };\n }\n\n /**\n * Splits a search string into an array of individual\n * regexps to be used to match results.\n *\n */\n tokenize(query, respect_word_boundaries, weights) {\n if (!query || !query.length) return [];\n const tokens = [];\n const words = query.split(/\\s+/);\n var field_regex;\n if (weights) {\n field_regex = new RegExp('^(' + Object.keys(weights).map(escape_regex).join('|') + ')\\:(.*)$');\n }\n words.forEach(word => {\n let field_match;\n let field = null;\n let regex = null; // look for \"field:query\" tokens\n\n if (field_regex && (field_match = word.match(field_regex))) {\n field = field_match[1];\n word = field_match[2];\n }\n if (word.length > 0) {\n if (this.settings.diacritics) {\n regex = diacriticRegexPoints(word);\n } else {\n regex = escape_regex(word);\n }\n if (respect_word_boundaries) regex = \"\\\\b\" + regex;\n }\n tokens.push({\n string: word,\n regex: regex ? new RegExp(regex, 'iu') : null,\n field: field\n });\n });\n return tokens;\n }\n\n /**\n * Returns a function to be used to score individual results.\n *\n * Good matches will have a higher score than poor matches.\n * If an item is not a match, 0 will be returned by the function.\n *\n * @returns {function}\n */\n getScoreFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getScoreFunction(search);\n }\n _getScoreFunction(search) {\n const tokens = search.tokens,\n token_count = tokens.length;\n if (!token_count) {\n return function () {\n return 0;\n };\n }\n const fields = search.options.fields,\n weights = search.weights,\n field_count = fields.length,\n getAttrFn = search.getAttrFn;\n if (!field_count) {\n return function () {\n return 1;\n };\n }\n /**\n * Calculates the score of an object\n * against the search query.\n *\n */\n\n const scoreObject = function () {\n if (field_count === 1) {\n return function (token, data) {\n const field = fields[0].field;\n return scoreValue(getAttrFn(data, field), token, weights[field]);\n };\n }\n return function (token, data) {\n var sum = 0; // is the token specific to a field?\n\n if (token.field) {\n const value = getAttrFn(data, token.field);\n if (!token.regex && value) {\n sum += 1 / field_count;\n } else {\n sum += scoreValue(value, token, 1);\n }\n } else {\n iterate(weights, (weight, field) => {\n sum += scoreValue(getAttrFn(data, field), token, weight);\n });\n }\n return sum / field_count;\n };\n }();\n if (token_count === 1) {\n return function (data) {\n return scoreObject(tokens[0], data);\n };\n }\n if (search.options.conjunction === 'and') {\n return function (data) {\n var i = 0,\n score,\n sum = 0;\n for (; i < token_count; i++) {\n score = scoreObject(tokens[i], data);\n if (score <= 0) return 0;\n sum += score;\n }\n return sum / token_count;\n };\n } else {\n return function (data) {\n var sum = 0;\n iterate(tokens, token => {\n sum += scoreObject(token, data);\n });\n return sum / token_count;\n };\n }\n }\n\n /**\n * Returns a function that can be used to compare two\n * results, for sorting purposes. If no sorting should\n * be performed, `null` will be returned.\n *\n * @return function(a,b)\n */\n getSortFunction(query, options) {\n var search = this.prepareSearch(query, options);\n return this._getSortFunction(search);\n }\n _getSortFunction(search) {\n var i, n, implicit_score;\n const self = this,\n options = search.options,\n sort = !search.query && options.sort_empty ? options.sort_empty : options.sort,\n sort_flds = [],\n multipliers = [];\n if (typeof sort == 'function') {\n return sort.bind(this);\n }\n /**\n * Fetches the specified sort field value\n * from a search result item.\n *\n */\n\n const get_field = function get_field(name, result) {\n if (name === '$score') return result.score;\n return search.getAttrFn(self.items[result.id], name);\n }; // parse options\n\n if (sort) {\n for (i = 0, n = sort.length; i < n; i++) {\n if (search.query || sort[i].field !== '$score') {\n sort_flds.push(sort[i]);\n }\n }\n } // the \"$score\" field is implied to be the primary\n // sort field, unless it's manually specified\n\n if (search.query) {\n implicit_score = true;\n for (i = 0, n = sort_flds.length; i < n; i++) {\n if (sort_flds[i].field === '$score') {\n implicit_score = false;\n break;\n }\n }\n if (implicit_score) {\n sort_flds.unshift({\n field: '$score',\n direction: 'desc'\n });\n }\n } else {\n for (i = 0, n = sort_flds.length; i < n; i++) {\n if (sort_flds[i].field === '$score') {\n sort_flds.splice(i, 1);\n break;\n }\n }\n }\n for (i = 0, n = sort_flds.length; i < n; i++) {\n multipliers.push(sort_flds[i].direction === 'desc' ? -1 : 1);\n } // build function\n\n const sort_flds_count = sort_flds.length;\n if (!sort_flds_count) {\n return null;\n } else if (sort_flds_count === 1) {\n const sort_fld = sort_flds[0].field;\n const multiplier = multipliers[0];\n return function (a, b) {\n return multiplier * cmp(get_field(sort_fld, a), get_field(sort_fld, b));\n };\n } else {\n return function (a, b) {\n var i, result, field;\n for (i = 0; i < sort_flds_count; i++) {\n field = sort_flds[i].field;\n result = multipliers[i] * cmp(get_field(field, a), get_field(field, b));\n if (result) return result;\n }\n return 0;\n };\n }\n }\n\n /**\n * Parses a search query and returns an object\n * with tokens and fields ready to be populated\n * with results.\n *\n */\n prepareSearch(query, optsUser) {\n const weights = {};\n var options = Object.assign({}, optsUser);\n propToArray(options, 'sort');\n propToArray(options, 'sort_empty'); // convert fields to new format\n\n if (options.fields) {\n propToArray(options, 'fields');\n const fields = [];\n options.fields.forEach(field => {\n if (typeof field == 'string') {\n field = {\n field: field,\n weight: 1\n };\n }\n fields.push(field);\n weights[field.field] = 'weight' in field ? field.weight : 1;\n });\n options.fields = fields;\n }\n return {\n options: options,\n query: query.toLowerCase().trim(),\n tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n total: 0,\n items: [],\n weights: weights,\n getAttrFn: options.nesting ? getAttrNesting : getAttr\n };\n }\n\n /**\n * Searches through all items and returns a sorted array of matches.\n *\n */\n search(query, options) {\n var self = this,\n score,\n search;\n search = this.prepareSearch(query, options);\n options = search.options;\n query = search.query; // generate result scoring function\n\n const fn_score = options.score || self._getScoreFunction(search); // perform search and sort\n\n if (query.length) {\n iterate(self.items, (item, id) => {\n score = fn_score(item);\n if (options.filter === false || score > 0) {\n search.items.push({\n 'score': score,\n 'id': id\n });\n }\n });\n } else {\n iterate(self.items, (_, id) => {\n search.items.push({\n 'score': 1,\n 'id': id\n });\n });\n }\n const fn_sort = self._getSortFunction(search);\n if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n search.total = search.items.length;\n if (typeof options.limit === 'number') {\n search.items = search.items.slice(0, options.limit);\n }\n return search;\n }\n }\n\n /**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\n\n const getDom = query => {\n if (query.jquery) {\n return query[0];\n }\n if (query instanceof HTMLElement) {\n return query;\n }\n if (isHtmlString(query)) {\n let div = document.createElement('div');\n div.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\n return div.firstChild;\n }\n return document.querySelector(query);\n };\n const isHtmlString = arg => {\n if (typeof arg === 'string' && arg.indexOf('<') > -1) {\n return true;\n }\n return false;\n };\n const escapeQuery = query => {\n return query.replace(/['\"\\\\]/g, '\\\\$&');\n };\n /**\n * Dispatch an event\n *\n */\n\n const triggerEvent = (dom_el, event_name) => {\n var event = document.createEvent('HTMLEvents');\n event.initEvent(event_name, true, false);\n dom_el.dispatchEvent(event);\n };\n /**\n * Apply CSS rules to a dom element\n *\n */\n\n const applyCSS = (dom_el, css) => {\n Object.assign(dom_el.style, css);\n };\n /**\n * Add css classes\n *\n */\n\n const addClasses = function (elmts) {\n for (var _len2 = arguments.length, classes = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n classes[_key2 - 1] = arguments[_key2];\n }\n var norm_classes = classesArray(classes);\n elmts = castAsArray(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.add(cls);\n });\n });\n };\n /**\n * Remove css classes\n *\n */\n\n const removeClasses = function (elmts) {\n for (var _len3 = arguments.length, classes = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n classes[_key3 - 1] = arguments[_key3];\n }\n var norm_classes = classesArray(classes);\n elmts = castAsArray(elmts);\n elmts.map(el => {\n norm_classes.map(cls => {\n el.classList.remove(cls);\n });\n });\n };\n /**\n * Return arguments\n *\n */\n\n const classesArray = args => {\n var classes = [];\n iterate(args, _classes => {\n if (typeof _classes === 'string') {\n _classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n }\n if (Array.isArray(_classes)) {\n classes = classes.concat(_classes);\n }\n });\n return classes.filter(Boolean);\n };\n /**\n * Create an array from arg if it's not already an array\n *\n */\n\n const castAsArray = arg => {\n if (!Array.isArray(arg)) {\n arg = [arg];\n }\n return arg;\n };\n /**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\n\n const parentMatch = (target, selector, wrapper) => {\n if (wrapper && !wrapper.contains(target)) {\n return;\n }\n while (target && target.matches) {\n if (target.matches(selector)) {\n return target;\n }\n target = target.parentNode;\n }\n };\n /**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\n\n const getTail = function (list) {\n let direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (direction > 0) {\n return list[list.length - 1];\n }\n return list[0];\n };\n /**\n * Return true if an object is empty\n *\n */\n\n const isEmptyObject = obj => {\n return Object.keys(obj).length === 0;\n };\n /**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\n\n const nodeIndex = (el, amongst) => {\n if (!el) return -1;\n amongst = amongst || el.nodeName;\n var i = 0;\n while (el = el.previousElementSibling) {\n if (el.matches(amongst)) {\n i++;\n }\n }\n return i;\n };\n /**\n * Set attributes of an element\n *\n */\n\n const setAttr = (el, attrs) => {\n iterate(attrs, (val, attr) => {\n if (val == null) {\n el.removeAttribute(attr);\n } else {\n el.setAttribute(attr, '' + val);\n }\n });\n };\n /**\n * Replace a node\n */\n\n const replaceNode = (existing, replacement) => {\n if (existing.parentNode) existing.parentNode.replaceChild(replacement, existing);\n };\n\n /**\n * highlight v3 | MIT license | Johann Burkard \n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal 2011-6-24 (added regex)\n * - Modified by Brian Reavis 2012-8-27 (cleanup)\n */\n const highlight = (element, regex) => {\n if (regex === null) return; // convet string to regex\n\n if (typeof regex === 'string') {\n if (!regex.length) return;\n regex = new RegExp(regex, 'i');\n } // Wrap matching part of text node with highlighting , e.g.\n // Soccer -> Soccer for regex = /soc/i\n\n const highlightText = node => {\n var match = node.data.match(regex);\n if (match && node.data.length > 0) {\n var spannode = document.createElement('span');\n spannode.className = 'highlight';\n var middlebit = node.splitText(match.index);\n middlebit.splitText(match[0].length);\n var middleclone = middlebit.cloneNode(true);\n spannode.appendChild(middleclone);\n replaceNode(middlebit, spannode);\n return 1;\n }\n return 0;\n }; // Recurse element node, looking for child text nodes to highlight, unless element\n // is childless,