{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./app/webpacker/javascripts/utils/material_elements.coffee","webpack:///./node_modules/@material/list/constants.js","webpack:///./node_modules/@material/base/foundation.js","webpack:///./node_modules/@material/base/component.js","webpack:///./node_modules/@material/dom/keyboard.js","webpack:///./node_modules/@material/dom/events.js","webpack:///./node_modules/@material/menu-surface/constants.js","webpack:///./app/webpacker/javascripts/utils/form_utils.coffee","webpack:///./node_modules/@material/dom/ponyfill.js","webpack:///./app/webpacker/javascripts/utils/money_format.coffee","webpack:///./app/webpacker/javascripts/utils/cookie_manager.coffee","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack:///./node_modules/chart.js/dist/chart.esm.js","webpack:///./node_modules/@material/ripple/component.js","webpack:///./app/webpacker/javascripts/utils/user.coffee","webpack:///./node_modules/@material/menu/constants.js","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:///./node_modules/@material/ripple/constants.js","webpack:///./node_modules/@material/ripple/foundation.js","webpack:///./node_modules/@material/dialog/constants.js","webpack:///./node_modules/@material/dialog/foundation.js","webpack:///./node_modules/@material/dialog/component.js","webpack:///./node_modules/@material/dialog/util.js","webpack:///./app/webpacker/javascripts/components/popup_message.coffee","webpack:///./app/webpacker/javascripts/utils/emoji_fallback.coffee","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/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/component.js","webpack:///./node_modules/@material/ripple/util.js","webpack:///./app/webpacker/javascripts/libs/autoComplete.js","webpack:///./node_modules/@material/textfield/helper-text/constants.js","webpack:///./node_modules/@material/textfield/helper-text/foundation.js","webpack:///./node_modules/@material/floating-label/constants.js","webpack:///./node_modules/@material/floating-label/foundation.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/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/list/component.js","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/@material/dom/focus-trap.js","webpack:///./app/webpacker/javascripts/utils/scroller.coffee","webpack:///./app/webpacker/javascripts/utils/amplitude.coffee","webpack:///./node_modules/@material/textfield/helper-text/component.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:///(webpack)/buildin/global.js","webpack:///./node_modules/@material/menu-surface/util.js","webpack:///./node_modules/@material/menu-surface/foundation.js","webpack:///./node_modules/@material/menu-surface/component.js","webpack:///./node_modules/@material/menu/foundation.js","webpack:///./node_modules/@material/menu/component.js","webpack:///./app/webpacker/javascripts/components/company_search.js","webpack:///./app/webpacker/javascripts/utils/tooltips.coffee","webpack:///./app/webpacker/javascripts/navigation.js","webpack:///./node_modules/choices.js/public/assets/scripts/choices.js","webpack:///./app/webpacker/javascripts/utils/date_formatter.coffee","webpack:///./app/webpacker/javascripts/tools/tool.coffee","webpack:///./node_modules/amplitude-js/amplitude.umd.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/isarray/index.js","webpack:///./app/webpacker/javascripts/site_search.js","webpack:///./app/webpacker/javascripts/components/lazy_load_images.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/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:///./app/webpacker/javascripts/components/layout.coffee","webpack:///./node_modules/@material/drawer/util.js","webpack:///./app/webpacker/javascripts/components/gdpr_cookie_notice.coffee","webpack:///./app/webpacker/javascripts/libs/requests.coffee","webpack:///./node_modules/tui-date-picker/dist/tui-date-picker.js","webpack:///./app/webpacker/javascripts/utils/percent_format.coffee","webpack:///./app/webpacker/javascripts/components/security_list_item.coffee","webpack:///./app/webpacker/javascripts/components/selected_securities_list.coffee","webpack:///./app/webpacker/javascripts/utils/infinite_scroll.coffee","webpack:///./node_modules/@stripe/stripe-js/dist/stripe.esm.js","webpack:///./app/webpacker/javascripts/stripe_payment_form.coffee","webpack:///./node_modules/@material/select/constants.js","webpack:///./node_modules/@material/select/foundation.js","webpack:///./node_modules/@material/select/helper-text/constants.js","webpack:///./node_modules/@material/select/helper-text/foundation.js","webpack:///./node_modules/@material/select/helper-text/component.js","webpack:///./node_modules/@material/select/icon/constants.js","webpack:///./node_modules/@material/select/icon/foundation.js","webpack:///./node_modules/@material/select/icon/component.js","webpack:///./node_modules/@material/select/component.js","webpack:///./node_modules/tui-time-picker/dist/tui-time-picker.js","webpack:///./app/webpacker/javascripts/components/dianomi.coffee","webpack:///./app/webpacker/javascripts/components/lazy_load_trustpilot.coffee","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/javascripts/components/banner.coffee","webpack:///./app/webpacker/packs/application.js","webpack:///./app/webpacker/javascripts/articles_search.coffee","webpack:///./app/webpacker/javascripts/accuracy.coffee","webpack:///./app/webpacker/javascripts/notifications.coffee","webpack:///./app/webpacker/javascripts/payment.coffee","webpack:///./app/webpacker/javascripts/begin_free_trial.coffee","webpack:///./app/webpacker/javascripts/emoji_fixes.coffee","webpack:///./app/webpacker/javascripts/components/setup_form_elements.js","webpack:///./app/webpacker/javascripts/register.coffee","webpack:///./app/webpacker/javascripts/login.coffee","webpack:///./app/webpacker/javascripts/password_reset.coffee","webpack:///./app/webpacker/javascripts/request_add_company.coffee","webpack:///./app/webpacker/javascripts/company_coverage.coffee","webpack:///./app/webpacker/javascripts/inquiries.coffee","webpack:///./app/webpacker/javascripts/my_account.coffee","webpack:///./app/webpacker/javascripts/tools/countdown.coffee","webpack:///./app/webpacker/javascripts/new_password.coffee","webpack:///./app/webpacker/javascripts/generator/generator_tab.coffee","webpack:///./app/webpacker/javascripts/generator/portfolio_form.coffee","webpack:///./app/webpacker/javascripts/generator/modify_portfolio_form.coffee","webpack:///./app/webpacker/javascripts/generator/overview.coffee","webpack:///./app/webpacker/javascripts/generator/generator.coffee","webpack:///./app/webpacker/javascripts/components/menu_builder.coffee","webpack:///./app/webpacker/javascripts/components/company_search_form.coffee","webpack:///./app/webpacker/javascripts/generator/add_holding_form.coffee","webpack:///./app/webpacker/javascripts/generator/new_portfolio_form.coffee","webpack:///./app/webpacker/javascripts/generator/modify_holding_form.coffee","webpack:///./app/webpacker/javascripts/generator/holding.coffee","webpack:///./app/webpacker/javascripts/generator/holdings.coffee","webpack:///./app/webpacker/javascripts/generator/future_dividend.coffee","webpack:///./app/webpacker/javascripts/generator/future_income.coffee","webpack:///./app/webpacker/javascripts/generator/transaction_form.coffee","webpack:///./app/webpacker/javascripts/generator/modify_transaction_form.coffee","webpack:///./app/webpacker/javascripts/generator/transaction.coffee","webpack:///./app/webpacker/javascripts/generator/transaction_holding.coffee","webpack:///./app/webpacker/javascripts/generator/new_transaction_form.coffee","webpack:///./app/webpacker/javascripts/generator/transactions.coffee","webpack:///./node_modules/@material/dom/announce.js","webpack:///./node_modules/@material/chips/trailingaction/constants.js","webpack:///./node_modules/@material/chips/chip/constants.js","webpack:///./node_modules/@material/chips/trailingaction/foundation.js","webpack:///./node_modules/@material/chips/trailingaction/component.js","webpack:///./node_modules/@material/chips/chip/foundation.js","webpack:///./node_modules/@material/chips/chip/component.js","webpack:///./node_modules/@material/chips/chip-set/constants.js","webpack:///./node_modules/@material/chips/chip-set/foundation.js","webpack:///./node_modules/@material/chips/chip-set/component.js","webpack:///./app/webpacker/javascripts/declared_dividends.coffee","webpack:///./app/webpacker/javascripts/tools/optimizer_table.coffee","webpack:///./app/webpacker/javascripts/tools/countdown_table.coffee","webpack:///./app/webpacker/javascripts/watchlist_dividends_table.coffee","webpack:///./app/webpacker/javascripts/dashboard.coffee","webpack:///./app/webpacker/javascripts/utils/validations.coffee","webpack:///./app/webpacker/javascripts/set_password.coffee","webpack:///./app/webpacker/javascripts/tools/optimizer.coffee","webpack:///./app/webpacker/javascripts/tools/optimizer_row.coffee","webpack:///./node_modules/@material/animation/util.js","webpack:///./node_modules/@material/checkbox/constants.js","webpack:///./node_modules/@material/checkbox/foundation.js","webpack:///./node_modules/@material/checkbox/component.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","extendStatics","b","setPrototypeOf","__proto__","Array","__extends","__","this","constructor","__assign","assign","arguments","length","apply","__values","iterator","next","done","TypeError","__read","e","ar","push","error","__spread","concat","link_button","label","url","raised","secondary","outlined","a","element_with_class","setAttribute","classList","add","append","span","innerText","submit_button","button","element_with_content","text_field","el","extra_classes","input","money_input_field","symbol","floatingLabel","element","classes","document","createElement","toUpperCase","content","innerHTML","material_select_option","selected","li","dataset","material_select","select","select_anchor","menu","ul","anchor","dropdown_icon","svg","createElementNS","setAttributeNS","inactive_polygon","active_polygon","appendChild","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","strings","ACTION_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","CHECKBOX_RADIO_SELECTOR","CHECKBOX_SELECTOR","CHILD_ELEMENTS_TO_TOGGLE_TABINDEX","FOCUSABLE_CHILD_ELEMENTS","RADIO_SELECTOR","numbers","UNSET_INDEX","TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS","MDCFoundation","adapter","configurable","init","destroy","MDCComponent","root","foundation","args","_i","initialize","undefined","getDefaultFoundation","initialSyncWithDOM","attachTo","_args","Error","listen","evtType","handler","options","addEventListener","unlisten","removeEventListener","emit","evtData","shouldBubble","evt","CustomEvent","bubbles","detail","createEvent","initCustomEvent","dispatchEvent","KEY","UNKNOWN","BACKSPACE","ENTER","SPACEBAR","PAGE_UP","PAGE_DOWN","END","HOME","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","DELETE","ESCAPE","normalizedKeys","Set","KEY_CODE","mappedKeyCodes","Map","set","navigationKeys","normalizeKey","has","mappedKey","keyCode","isNavigationEvent","applyPassive","globalObj","window","passiveSupported","err","supportsPassiveOption","passive","CornerBit","Corner","ANCHOR","ANIMATING_CLOSED","ANIMATING_OPEN","FIXED","IS_OPEN_BELOW","OPEN","CLOSED_EVENT","OPENED_EVENT","FOCUSABLE_ELEMENTS","join","TRANSITION_OPEN_DURATION","TRANSITION_CLOSE_DURATION","MARGIN_TO_EDGE","ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO","generate_recaptcha_token","callback","grecaptcha","ready","execute","body","googleSiteKey","action","then","token","querySelector","form_params","selector","params","params_with_csrf_token","form","append_input_to_params","URLSearchParams","append_csrf_token","token_name","getAttribute","token_value","form_element","method","id","hidden_field","closest","matches","parentElement","webkitMatchesSelector","msMatchesSelector","estimateScrollWidth","htmlEl","offsetParent","scrollWidth","clone","cloneNode","style","setProperty","documentElement","removeChild","MoneyFormat","ONE_MILLION","formatFull","float","currency","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","format","digits","Math","abs","formatLargeAmount","minDigits","formatForInput","maxDigits","useGrouping","val","ltr","formatWithSymbol","amt","roundTo","round","poundAmount","floor","pennyAmount","penny","formatMinor","minorName","currencySymbol","toFloat","string","parseFloat","stripNonNumerics","replace","num","dp","mult","CookieManager","date","Date","setTime","getTime","cookie","toUTCString","trim","indexOf","substring","remove","requestAnimFrame","requestAnimationFrame","throttled","fn","thisArg","updateFn","updateArgs","slice","ticking","_len","rest","_key","_toLeftRightCenter","align","_alignStartEnd","start","end","noop","uid","isNullOrUndef","isArray","type","toString","substr","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","each","loopable","reverse","len","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","map","target","klen","k","isValidKey","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","idx","resolveObjectKey","obj","pos","_capitalize","str","charAt","defined","isFunction","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","niceRange","pow","fraction","isNumber","isNaN","almostEquals","x","y","epsilon","_setMinAndMaxByKey","array","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","distanceBetweenPoints","pt1","pt2","sqrt","_angleDiff","_normalizeAngle","_angleBetween","angle","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","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","easeInBounce","easeOutBounce","easeInOutBounce","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","f","hex","h1","h2","eq","hexString","v","g","isShort","lim","h","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","map$1","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","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","names$1","nameParse","unpacked","tkeys","j","ok","nk","parseInt","unpack","transparent","toLowerCase","modHSL","ratio","tmp","proto","fromObject","functionParse","rgbParse","Color","ret","_rgb","_valid","hslString","color","weight","me","c1","c2","w2","w1","deg","rotate","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","saturate","darken","overrides","getScope$1","node","split","scope","values","defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","chart","platform","getDevicePixelRatio","elements","events","font","family","size","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","_scriptable","startsWith","_indexable","_fallback","_measureText","data","gc","longest","textWidth","measureText","width","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","splice","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","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","text","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","strokeStyle","lineWidth","strokeText","maxWidth","fillText","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","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","forEach","_arrayUnique","items","result","item","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","override","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","includes","ownKeys","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","descriptors","isScriptable","delete","createSubResolver","_resolveScriptable","isIndexable","arr","filter","resolver","_resolveArray","needsSubResolver","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","readKey","prefix","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","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","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","positions","getPositionedStyle","styles","suffix","getRelativePosition","borderBox","boxSizing","paddings","borders","_getCanvasPosition","native","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","formatNumber","locale","cacheKey","JSON","stringify","formatter","getNumberFormat","getRtlAdapter","rtl","rectX","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_ref","count","_boundSegment","segment","bounds","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","prevValue","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","splitByStyles","segmentOptions","prevStyle","readStyle","p0","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","_slicedToArray","_arrayWithHoles","_s","_e","_arr","_n","_d","_iterableToArrayLimit","minLen","_arrayLikeToArray","from","test","_unsupportedIterableToArray","_nonIterableRest","arr2","animator","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","duration","initial","currentStep","_update","_refresh","now","remaining","running","draw","_active","_total","tick","pop","_notify","charts","complete","progress","event","cb","_getAnims","reduce","acc","cur","_duration","cancel","interpolators","boolean","to","factor","c0","valid","mix","number","cfg","currentValue","_fn","_easing","easing","_start","delay","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","promises","Promise","res","rej","resolved","colors","properties","active","resize","show","animations","visible","hide","config","_chart","_properties","configure","animatedProps","getOwnPropertyNames","option","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","wait","all","awaitAll","_animateOptions","update","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","meta","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iScale","iAxis","axis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","shift","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","linkScales","_stacked","addElements","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","adata","convertObjectDataToArray","isExtensible","base","_len2","_key2","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","parse","_this$_parsing","_this$_parsing$xAxisK","xAxisKey","_this$_parsing$yAxisK","yAxisKey","parsedValue","NaN","canStack","otherScale","_getOtherScale","NEGATIVE_INFINITY","_getUserBounds","_scale$getUserBounds","getUserBounds","minDefined","maxDefined","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","_clip","toClip","defaultClip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","_resolveAnimations","getSharedOptions","_setStyle","_ref2","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","computeMinSampleSize","_cache","$bar","metas","getAllParsedValues","sort","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","_this$_parsing2","_this$_parsing2$xAxis","_this$_parsing2$yAxis","iAxisKey","vAxisKey","super","bars","reset","getBasePixel","horizontal","isHorizontal","ruler","_getRuler","firstOpts","includeOptions","updateSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","enableBorderRadius","center","updateElement","last","_getStacks","pixels","barThickness","_startPixel","_endPixel","stackCount","_getStackCount","grouped","categoryPercentage","barPercentage","_me$_cachedMeta","_me$options","baseValue","minBarLength","floating","getDataVisibility","actualBase","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","_getStackIndex","rects","_index_","offset","grid","_value_","beginAtZero","_this$_parsing3","_this$_parsing3$xAxis","_this$_parsing3$yAxis","_this$_cachedMeta","_me$_cachedMeta2","getPixelForDecimal","tooltip","title","innerRadius","outerRadius","circumference","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","_me$_getRotationExten","_getRotationExtents","_getRatioAndOffset","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","hidden","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","_meta$data","_dataset","animationsDisabled","_getStartAndCountOfVi","pointCount","_iScale$getUserBounds","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_decimated","animated","_me$_cachedMeta3","maxGapLength","directUpdate","prevParsed","nullData","stop","border","lastPoint","updateControlPoints","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","DateAdapter","timestamp","amount","unit","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","optimizedEvaluateItems","position","getSortedVisibleDatasetMetas","_metasets$i2","_binarySearch","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","distance","getAxisItems","rangeMethod","intersectsItem","_metasets$i","evaluateAllVisibleItems","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","layout","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","_updateDims","fullSize","placeBoxes","userPadding","padding","layouts","_layers","z","layoutItem","minPadding","availableWidth","availableHeight","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","setLayoutDims","updatePos","change","handleMaxPadding","BasePlatform","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","createAttachObserver","observer","MutationObserver","entries","addedNodes","added","observe","childList","subtree","createDetachObserver","removedNodes","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","_getRelativePosition$","fromNativeEvent","addListener","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","proxies","$proxies","attach","detach","_this$getProps","getProps","final","defaultRoutes","formatters","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","numeric","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","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","route","offsetFromEdge","edge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","_me$getUserBounds","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","_me$options2","titleOpts","gridOpts","titleHeight","_me$_getLabelSizes","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","_me$options3","_me$options3$ticks","isRotated","labelsBelowTicks","offsetLeft","offsetRight","_this$options","generateTickLabels","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","createTickContext","optionTicks","rot","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","_me$options4","_me$options5","_me$options5$ticks","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","_this$options2","_titleArgs","titleX","titleY","titleArgs","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","axisID","fontSize","isPrototypeOf","parentScope","isIChartComponent","register","itemDefaults","routes","propertyParts","sourceName","sourceScope","parts","routeDefaults","registerDefaults","controllers","_typedRegistries","_each","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_get","_len7","_key7","_len8","_key8","_len9","_key9","_len10","_key10","typedRegistry","arg","reg","_getRegistryForType","isForType","_exec","itemReg","registry","component","camelMethod","_init","hook","_createDescriptors","descriptor","plugin","cancelable","_oldCache","_notifyStateChanges","getPlugin","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","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","mainScope","resetCache","keyLists","_cachedScopes","_getResolver","getResolver","subPrefixes","_descriptors2","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","animationOptions","onComplete","onAnimationProgress","onProgress","isDomSupported","getCanvas","getElementById","instances","getChart","initialCanvas","existingChart","chartOptionScopes","_initializePlatform","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","setTimeout","debounce","resizeDelay","_initialize","_this$options3","bindEvents","OffscreenCanvas","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","axisOptions","scaleOpts","updated","isRadial","dposition","dtype","scaleType","getScale","hasUpdated","addBox","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","order","updateIndex","ControllerClass","getController","_defaults$datasets$ty","getElement","_updateMetasets","_resetElements","removeBox","animsDisabled","ensureScalesHaveIDs","buildOrUpdateScales","setsEqual","unbindEvents","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_updateLayout","_updateDatasets","_eventHandler","noArea","_idx","_updateDataset","_me$_resizeBeforeDraw","layers","_drawDatasets","_drawDataset","setDatasetVisibility","_updateDatasetVisibility","_destroy","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","isAttached","activeElements","lastActive","_ref3","_updateHoverStyles","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","eventFilter","_handleEvent","_me$_active","lastEvent","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","alpha","angleOffset","_parseBorderRadius$","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","inner","lineJoin","fullCircles","drawFullCircleBorders","version","unregister","chartX","chartY","_getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","atan2","getAngleFromPoint","_this$getProps2","_this$getProps3","halfAngle","halfRadius","radiusOffset","drawArc","setStyle","lineCap","pathVars","_params$start","paramsStart","_params$end","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","_pathVars","lineMethod","stepped","getLineMethod","_ref4","_ref4$move","fastPathSegment","_pathVars2","_ref5","_ref5$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","_this$getProps5","hoverRadius","getBarBounds","bar","_bar$getProps","half","parseBorderSkipped","borderSkipped","parseEdge","orig","v2","startEnd","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","outer","skipX","skipY","addNormalRectPath","_boundingRects","addRectPath","_this$getProps6","_padding","textSize","fontOpts","_me$_drawArgs","_drawArgs","plugin_title","_element","titleBlock","createTitle","positioners","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","_controller$getLabelA","getLabelAndValue","getTooltipSize","footer","boxWidth","boxHeight","bodyFont","titleFont","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","radiusAndPadding","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","beforeTitle","afterTitle","bodyItems","scoped","beforeLabel","afterLabel","beforeFooter","afterFooter","itemSort","labelColor","labelPointStyle","labelTextColor","_createItems","getTitle","getBeforeBody","getBody","getAfterBody","getFooter","positionAndSize","backgroundPoint","external","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","rtlHelper","titleColor","colorX","rtlColorX","yOffSet","colorY","usePointStyle","drawOptions","multiKeyBackground","outerX","innerX","strokeRect","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","textDirection","drawBody","drawFooter","_ref10","positionChanged","_positionChanged","plugin_tooltip","handleEvent","labelCount","findOrAddLabel","addIfString","lastIndexOf","_startValue","_valueRange","_me$getUserBounds2","_me$getMinMax","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","step","precision","maxTicks","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","_ref11","_endValue","_me$getUserBounds3","setMin","setMax","minSign","maxSign","stepSize","computeTickLimit","getTickLimit","_maxDigits","_me$getMinMax2","handleTickRangeOptions","isMajor","tickVal","_zero","_me$getMinMax3","_me$getUserBounds4","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","pathRadiusLine","getPointPosition","param","logarithmic","drawingArea","_pointLabels","_pointLabelItems","_me$getMinMax4","furthestLimits","furthestAngles","valueCount","plFont","hLimits","vLimits","_setReductions","tickBackdropHeight","outerDistance","extra","pointLabelPosition","fitWithPointLabels","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","scaledDistance","distanceFromCenter","_this$_pointLabelItem","_me$options7","_scale$_pointLabelIte","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","_adapter","_scale$_parseOpts","_parseOpts","parser","isoWeekday","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","MAX_SAFE_INTEGER","addTick","time","timestamps","_lookup2","ticksFromTimestamps","majorUnit","setMajorTicks","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_me$getUserBounds5","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","limit","hasWeekday","getDataTimestamps","tooltipFormat","datetime","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","interpolate","prevSource","nextSource","prevTarget","nextTarget","_table","_maxIndex","_getTimestampsForTable","buildLookupTable","MDCRipple","_super","_this","disabled","isUnbounded","ripple","unbounded","createAdapter","instance","addClass","className","browserSupportsCssVars","computeBoundingRect","containsEventTarget","contains","deregisterDocumentInteractionHandler","deregisterInteractionHandler","deregisterResizeHandler","getWindowPageOffset","pageXOffset","pageYOffset","isSurfaceActive","isSurfaceDisabled","Boolean","registerDocumentInteractionHandler","registerInteractionHandler","registerResizeHandler","removeClass","updateCssVariable","varName","unbounded_","setUnbounded_","activate","deactivate","setUnbounded","User","isLoggedIn","isEmailVerified","emailVerified","isFreeAccount","status","isPaidExpired","isFreeTrialActive","isFreeTrialExpired","isPaidActive","hasActiveSubscription","userType","isExpired","expired","userStatus","hasNotification","shareId","notificationShareIds","notificationCount","notificationQuantities","notifIds","notifCounts","DefaultFocusState","MENU_SELECTED_LIST_ITEM","MENU_SELECTION_GROUP","ARIA_CHECKED_ATTR","ARIA_DISABLED_ATTR","LIST_SELECTOR","SELECTED_EVENT","FOCUS_ROOT_INDEX","CLOSING","OPENING","ACTION_SELECTOR","ARIA_LIVE_LABEL_TEXT_ATTR","CLOSING_EVENT","DISMISS_SELECTOR","LABEL_SELECTOR","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","MDCSnackbarFoundation","defaultAdapter","isOpen_","animationFrame_","animationTimer_","autoDismissTimer_","autoDismissTimeoutMs_","closeOnEscape_","announce","notifyClosed","notifyClosing","notifyOpened","notifyOpening","clearAutoDismissTimer_","cancelAnimationFrame","open","runNextAnimationFrame_","timeoutMs","getTimeoutMs","handleAnimationTimerEnd_","close","reason","isOpen","setTimeoutMs","minValue","maxValue","getCloseOnEscape","setCloseOnEscape","closeOnEscape","handleKeyDown","handleActionButtonClick","_evt","handleActionIconClick","ariaEl","labelEl","priority","labelText","textContent","MDCSnackbar","announcerFactory","announce_","surfaceEl_","labelEl_","actionEl_","handleKeyDown_","handleSurfaceClick_","isActionButton_","isActionIcon_","registerKeyDownHandler_","registerSurfaceClickHandler_","deregisterKeyDownHandler_","deregisterSurfaceClickHandler_","actionButtonText","message","addFlashMessage","success","clazz","removeFlashMessage","div","buildFlashMessage","prepareFlashMessage","surface","existing","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_","maxRadius_","unboundedCoords_","activationState_","defaultActivationState_","activationTimerCallback_","runDeactivationUXLogicIfReady_","activateHandler_","activate_","deactivateHandler_","deactivate_","focusHandler_","handleFocus","blurHandler_","handleBlur","resizeHandler_","supportsPressRipple","supportsPressRipple_","registerRootHandlers_","_a","ROOT_1","UNBOUNDED_1","layoutInternal_","ROOT_2","UNBOUNDED_2","removeCssVars_","deregisterRootHandlers_","deregisterDeactivationHandlers_","activationEvent","hasDeactivationUXRun","isActivated","isProgrammatic","wasActivatedByPointer","wasElementMadeActive","registerDeactivationHandlers_","rippleStrings","activationState","previousActivationEvent","previousActivationEvent_","resetActivationState_","checkElementMadeActive_","animateActivation_","_b","translateStart","translateEnd","_c","getFgTranslationCoordinates_","startPoint","endPoint","rmBoundedActivationClasses_","state","animateDeactivation_","maxDim","initialSize","updateLayoutCssVars_","SCROLLABLE","SCROLL_LOCK","STACKED","ACTION_ATTRIBUTE","BUTTON_DEFAULT_ATTRIBUTE","BUTTON_SELECTOR","CLOSE_ACTION","CONTAINER_SELECTOR","CONTENT_SELECTOR","DESTROY_ACTION","INITIAL_FOCUS_ATTRIBUTE","SCRIM_SELECTOR","SUPPRESS_DEFAULT_PRESS_SELECTOR","DIALOG_ANIMATION_CLOSE_TIME_MS","DIALOG_ANIMATION_OPEN_TIME_MS","MDCDialogFoundation","escapeKeyAction_","scrimClickAction_","autoStackButtons_","areButtonsStacked_","addBodyClass","areButtonsStacked","clickDefaultButton","eventTargetMatches","getActionFromEvent","getInitialFocusEl","hasClass","isContentScrollable","releaseFocus","removeBodyClass","reverseButtons","trapFocus","setAutoStackButtons","getEscapeKeyAction","setEscapeKeyAction","getScrimClickAction","setScrimClickAction","getAutoStackButtons","autoStack","handleClick","handleKeydown","isEnter","isDefault","handleDocumentKeydown","detectStackedButtons_","detectScrollableContent_","MDCDialog","focusTrapFactory","e_1","focusOptions","container_","content_","buttons_","querySelectorAll","defaultButton_","focusTrapFactory_","buttonRipples_","buttonEl","e_1_1","return","surfaceEl","initialFocusEl","focusTrap_","getInitialFocusEl_","handleClick_","handleKeydown_","handleDocumentKeydown_","handleLayout_","LAYOUT_EVENTS","handleOpening_","handleClosing_","els","tops","offsetTop","click","scrollHeight","offsetHeight","alert","addAndShowDialog","alertDialog","confirm","confirmDialog","showPopup","buttons","buildSurface","dialog","buttonPanel","closeButtonPanel","buildDialog","okButtonPanel","yesCancelButtonPanel","closeIcon","icon","cancelButton","yesButton","okButton","closeButton","is_default","mdcDialogButtonDefault","mdcDialogAction","EmojiFallback","prepare_string","run","emoji_support","replace_emojis","tree_walker","nodes","createTreeWalker","NodeFilter","SHOW_TEXT","FILTER_SKIP","nodeName","nodeValue","FILTER_ACCEPT","FILTER_REJECT","text_nodes","walker","nextNode","currentNode","flag","fromCodePoint","getImageData","codePoint","units","fromCharCode","surrogatePairToCodepoint","lead","trail","getImageForCodepoint","img","verticalAlign","src","fragmentForString","htmlString","tmpDoc","fragment","createDocumentFragment","childNode","firstChild","replace_in_node","pattern","replacement","imageReplacement","replaceChild","replaceInElement","p3","point1","charCodeAt","point2","outerHTML","chars","ELEMENTS_KEY_ALLOWED_IN","preventDefaultEvent","tagName","preventDefault","matchItem","nextChar","focusItemAtIndex","sortedIndexByFirstChar","focusedItemIndex","skipFocus","isItemAtIndexDisabled","bufferClearTimeout","clearBuffer","typeaheadBuffer","firstChar","itemsMatchingFirstChar","currentFirstChar","sortedIndexCursor","newIndex","cursorPosition","newCursorPosition","matchFirstChar","startingItem","nextCursorPosition","currentItem","isEnabled","matchAllChars","isTypingInProgress","isTargetListItem","isArrowLeft","isArrowUp","isArrowRight","isArrowDown","isHome","isEnd","isSpace","MDCListFoundation","wrapFocus_","isVertical_","isSingleSelectionList_","selectedIndex_","useActivatedClass_","ariaCurrentAttrValue_","isCheckboxList_","isRadioList_","hasTypeahead","typeaheadState","addClassForElementIndex","getAttributeForElementIndex","getFocusedElementIndex","getListItemCount","hasCheckboxAtIndex","hasRadioAtIndex","isCheckboxCheckedAtIndex","isFocusInsideList","isRootFocused","listItemAtIndexHasClass","notifyAction","removeClassForElementIndex","setAttributeForElementIndex","setCheckedCheckboxOrRadioAtIndex","setTabIndexForListItemChildren","getPrimaryTextAtIndex","typeaheadInitSortedIndex","setWrapFocus","setVerticalOrientation","setSingleSelection","setHasTypeahead","isTypeaheadInProgress","setUseActivatedClass","useActivated","getSelectedIndex","setSelectedIndex","isIndexValid_","setCheckboxAtIndex_","setRadioAtIndex_","setSingleSelectionAtIndex_","handleFocusIn","_","listItemIndex","handleFocusOut","setTabindexToFirstSelectedItem_","isRootListItem","focusLastElement","focusFirstElement","currentIndex","focusNextElement","focusPrevElement","isSelectableList_","setSelectedIndexOnAction_","toggleCheckbox","setTabindexAtIndex_","nextIndex","prevIndex","lastIndex","setEnabled","itemIndex","selectedClassName","setAriaForSingleSelectionAtIndex_","isAriaCurrent","ariaAttribute","ariaAttributeValue","isChecked","targetIndex","minIndex","isIndexInRange_","listSize","toggleCheckboxAtIndex_","selectedIndexes","typeaheadMatchItem","startingIndex","listItemCount","getPrimaryTextByItemIndex","primaryText","clearTypeaheadBuffer","ROOT_SELECTOR","MDCTextFieldCharacterCounterFoundation","setContent","setCounterValue","currentLength","maxLength","MDCTextFieldCharacterCounter","ARIA_CONTROLS","INPUT_SELECTOR","LEADING_ICON_SELECTOR","LINE_RIPPLE_SELECTOR","OUTLINE_SELECTOR","PREFIX_SELECTOR","SUFFIX_SELECTOR","TRAILING_ICON_SELECTOR","DISABLED","FOCUSED","FULLWIDTH","HELPER_LINE","INVALID","LABEL_FLOATING","NO_LABEL","OUTLINED","TEXTAREA","WITH_LEADING_ICON","WITH_TRAILING_ICON","LABEL_SCALE","VALIDATION_ATTR_WHITELIST","ALWAYS_FLOAT_TYPES","POINTERDOWN_EVENTS","INTERACTION_EVENTS","MDCTextFieldFoundation","foundationMap","isFocused_","receivedUserInput_","isValid_","useNativeValidation_","helperText_","helperText","characterCounter_","characterCounter","leadingIcon_","leadingIcon","trailingIcon_","trailingIcon","inputFocusHandler_","activateFocus","inputBlurHandler_","deactivateFocus","inputInputHandler_","handleInput","setPointerXOffset_","setTransformOrigin","textFieldInteractionHandler_","handleTextFieldInteraction","validationAttributeChangeHandler_","attributesList","handleValidationAttributeChange","getNativeInput_","shouldAlwaysFloat_","getValue","isBadInput_","isValid","registerTextFieldInteractionHandler","deregisterTextFieldInteractionHandler","registerInputInteractionHandler","deregisterInputInteractionHandler","registerValidationAttributeChangeHandler","deregisterValidationAttributeChangeHandler","getNativeInput","isFocused","activateLineRipple","deactivateLineRipple","setLineRippleTransformOrigin","shakeLabel","floatLabel","setLabelRequired","hasLabel","getLabelWidth","hasOutline","notchOutline","closeOutline","required","shouldFloat","styleFloating_","validationObserver_","setCharacterCounter_","nativeInput","attributeName","styleValidity_","openNotch","styleFocused_","shouldShake","showToScreenReader","isDisabled","targetEvent","targetClientRect","normalizedX","autoCompleteFocus","setValue","isNativeInputValid_","setValid","setUseNativeValidation","useNativeValidation","setDisabled","styleDisabled_","setHelperTextContent","setLeadingIconAriaLabel","setAriaLabel","setLeadingIconContent","setTrailingIconAriaLabel","setTrailingIconContent","validity","badInput","setValidity","isFloating","MDCTextField","rippleFactory","lineRippleFactory","helperTextFactory","characterCounterFactory","iconFactory","labelFactory","outlineFactory","input_","labelElement","label_","lineRippleElement","lineRipple_","outlineElement","outline_","helperTextStrings","nextElementSibling","hasHelperLine","helperTextEl","characterCounterStrings","characterCounterEl","leadingIconEl","trailingIconEl","prefix_","suffix_","createRipple_","minLength","prefixText","suffixText","focus","getRootAdapterMethods_","getInputAdapterMethods_","getLabelAdapterMethods_","getLineRippleAdapterMethods_","getOutlineAdapterMethods_","getFoundationMap_","mutationsList","mutation","getAttributesList","attributes","activeElement","getWidth","shake","isRequired","setRequired","setRippleCenter","closeNotch","notch","foundationForTextField","isTextArea","isOutlined","ponyfill","supportsCssVariables_","supportsCssVariables","windowObj","forceRefresh","supportsCssVars","CSS","supports","explicitlySupportsCssVars","weAreFeatureDetectingSafari10plus","getNormalizedEventCoords","pageOffset","clientRect","normalizedY","documentX","documentY","touchEvent","changedTouches","pageX","pageY","mouseEvent","_classCallCheck","Constructor","_defineProperties","_createClass","protoProps","staticProps","_createForOfIteratorHelper","it","normalCompletion","didErr","dataAttribute","resultsList","highlight","selectedResult","getInput","createResultsList","renderResults","destination","insertAdjacentElement","addResultsToList","dataSrc","resultItem","record","resultIndex","clearResults","onSelection","field","feedback","resultsValues","selection","query","HTMLInputElement","results","list","find","currentTarget","navigation","childNodes","liLength","liSelected","removeSelection","nextSibling","previousSibling","highlightSelection","onkeydown","onmousedown","autoComplete","_config$selector","_config$data","_src","_config$data$cache","_config$trigger","trigger","_config$trigger$event","_config$trigger$condi","condition","_config$searchEngine","searchEngine","_config$threshold","threshold","_config$debounce","_config$resultsList","_config$resultsList$r","_config$resultsList$c","_config$resultsList$p","_config$resultsList$e","resultsListElement","_config$resultsList$n","navigation$$1","_config$sort","placeHolder","_config$maxResults","maxResults","_config$resultItem","_config$resultItem$co","_config$resultItem$el","resultItemElement","noResults","_config$highlight","highlight$$1","resultsListView","view","recordLowerCase","searchPosition","recordChar","resList","search","recordValue","queryValue","_step","_iterator","_this2","func","inDebounce","inputValue","HTMLTextAreaElement","manipulate","renderResultsList","triggerCondition","eventEmitter","listMatchedResults","dataStream","eventType","_this3","ignite","factory","HELPER_TEXT_PERSISTENT","HELPER_TEXT_VALIDATION_MSG","ARIA_HIDDEN","ROLE","MDCTextFieldHelperTextFoundation","setAttr","removeAttr","setPersistent","isPersistent","setValidation","isValidation","inputIsValid","helperTextIsPersistent","validationMsgNeedsDisplay","hide_","LABEL_FLOAT_ABOVE","LABEL_REQUIRED","LABEL_SHAKE","MDCFloatingLabelFoundation","shakeAnimationEndHandler_","handleShakeAnimationEnd_","NOTCH_ELEMENT_SELECTOR","NOTCH_ELEMENT_PADDING","OUTLINE_NOTCHED","OUTLINE_UPGRADED","MDCNotchedOutlineFoundation","setNotchWidthProperty","removeNotchWidthProperty","notchWidth","MDCNotchedOutline","notchElement_","transitionDuration","removeProperty","MDCFloatingLabel","LINE_RIPPLE_ACTIVE","LINE_RIPPLE_DEACTIVATING","MDCLineRippleFoundation","transitionEndHandler_","handleTransitionEnd","registerEventHandler","deregisterEventHandler","xCoordinate","isDeactivating","propertyName","MDCLineRipple","MDCList","isSingleSelectionList","handleClickEvent_","handleKeydownEvent_","focusInEventListener_","handleFocusInEvent_","focusOutEventListener_","handleFocusOutEvent_","initializeListType","getPrimaryText","singleLineText","checkboxListItems","singleSelectedListItem","radioSelectedListItem","preselectedItems","selectedIndex","listItem","listElements","singleSelection","attr","checked","toggleEl","initEvent","tabIndexValue","getListItemIndex_","eventTarget","nearestParent","ICON_EVENT","ICON_ROLE","MDCTextFieldIconFoundation","savedTabIndex_","interactionHandler_","handleInteraction","getAttr","notifyIconAction","isEnterKey","MDCTextFieldIcon","FOCUS_SENTINEL_CLASS","FocusTrap","elFocusedBeforeTrapFocus","focusableEls","getFocusableElements","HTMLElement","wrapTabFocus","skipInitialFocus","focusInitialElement","sentinelEl","sentinelStart","createSentinel","sentinelEnd","insertBefore","children","focusIndex","isDisabledOrHidden","isTabbableAndVisible","tabIndex","isProgrammaticallyHidden","visibility","sentinel","scroll_to_element","scrollTop","clientTop","header","scroll","behavior","amplitude","getInstance","userId","setUserId","identify","Identify","userName","EventTracking","track","location","pathname","logEvent","MDCTextFieldHelperText","ACTIVE","FADE","NO_TRANSITION","MDCTabIndicatorFoundation","computeContentClientRect","setContentStyleProperty","MDCFadingTabIndicatorFoundation","MDCSlidingTabIndicatorFoundation","previousIndicatorClientRect","currentClientRect","widthDelta","xPosition","MDCTabIndicator","Function","cachedCssTransformPropertyName_","MDCMenuSurfaceFoundation","isSurfaceOpen","isQuickOpen","isHoistedElement","isFixedPosition","openAnimationEndTimerId","closeAnimationEndTimerId","animationRequestId","anchorCorner","TOP_START","originCorner","anchorMargin","hasAnchor","isElementInContainer","isRtl","getInnerDimensions","getAnchorDimensions","getWindowDimensions","getBodyDimensions","getWindowScroll","setPosition","setMaxHeight","saveFocus","restoreFocus","notifyClose","notifyOpen","setAnchorCorner","corner","flipCornerHorizontally","RIGHT","setAnchorMargin","setIsHoisted","isHoisted","setFixedPosition","setAbsolutePosition","setQuickOpen","quickOpen","dimensions","autoposition","skipRestoreFocus","maybeRestoreFocus","handleBodyClick","measurements","getAutoLayoutmeasurements","getoriginCorner","maxMenuSurfaceHeight","getMenuSurfaceMaxHeight","verticalAlignment","hasBit","BOTTOM","horizontalAlignment","horizontalOffset","getHorizontalOriginOffset","verticalOffset","getVerticalOriginOffset","anchorSize","surfaceSize","adjustPositionForHoistedElement","anchorRect","bodySize","viewportSize","windowScroll","viewportDistance","availableTop","availableBottom","setBit","availableLeft","availableRight","isFlipRtl","FLIP_RTL","hasRightBit","isAnchoredToRight","isAvailableLeft","isAvailableRight","isOriginCornerAlignedToEnd","unsetBit","isBottomAligned","isBottomAnchored","isRightAligned","avoidHorizontalOverlap","rightOffset","avoidVerticalOverlap","props_1","props_1_1","childHasFocus","bit","MDCMenuSurface","parentEl","anchorElement","registerBodyClickListener","capture","deregisterBodyClickListener","setMenuSurfaceAnchorElement","isFixed","origin","previousFocus","offsetWidth","innerWidth","innerHeight","rootHTML","MDCMenuFoundation","closeAnimationEndTimerId_","defaultFocusState_","LIST_ROOT","addClassToElementAtIndex","removeClassFromElementAtIndex","addAttributeToElementAtIndex","removeAttributeFromElementAtIndex","elementContainsClass","closeSurface","getElementIndex","notifySelected","getMenuItemCount","focusListRoot","getSelectedSiblingOfItemAtIndex","isSelectableItemAtIndex","handleItemAction","recomputedIndex","handleMenuSurfaceOpened","FIRST_ITEM","LAST_ITEM","NONE","setDefaultFocusState","focusState","validatedIndex_","prevSelectedIndex","menuSize","MDCMenu","menuSurfaceFactory","listFactory","menuSurfaceFactory_","listFactory_","menuSurface_","list_","wrapFocus","handleItemAction_","handleMenuSurfaceOpened_","typeaheadInProgress","getOptionByIndex","setAnchorElement","selectedItemEl","CompanySearch","includeHoldings","includeLinkToRequestCompany","selectionCallback","prepare","emoji","prepareAutocomplete","onsubmit","onblur","encodeURIComponent","fetch","json","placeholder","ticker","Tooltips","prepareTooltip","hideAll","shouldAnchorRight","onclick","prepareNagivateToOnClick","afterLogin","prepareRedirectAfterLogin","toggle","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getKeys","getOwnPropertySymbols","propertyIsEnumerable","getEnumerableOwnPropertySymbols","mergeObject","unused","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","deepmerge_1","__webpack_exports__","global","_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__","self","default","maxPatternLength","u","caseSensitive","tokenSeparator","findAllMatches","minMatchCharLength","shouldSort","getFn","sortFn","score","tokenize","matchAllTokens","includeMatches","includeScore","$","verbose","isCaseSensitive","setCollection","_log","_prepareSearchers","tokenSearchers","fullSearcher","_search","weights","_computeScore","_sort","_format","_analyze","resultMap","arrayIndex","isMatch","output","matchedIndices","nScore","indices","log","patternAlphabet","errors","currentLocation","expectedLocation","symbolObservablePonyfill","observable","originalModule","webpackPolyfill","dist_fuse","fuse_default","cjs","cjs_default","es","randomString","random","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","createStore","reducer","preloadedState","enhancer","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","subscribe","isSubscribed","dispatch","replaceReducer","nextReducer","outerSubscribe","observeState","unsubscribe","getUndefinedStateErrorMessage","actionType","tmpEl","defaultState","groups_defaultState","choices_defaultState","general_defaultState","loading","reducers_general","isLoading","generateChars","getType","isType","sanitise","strToEl","cleanedInput","firldChild","sortByScore","cloneObject","appReducer","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","previousStateForKey","nextStateForKey","errorMessage","combineReducers","choiceId","groupId","highlighted","customProperties","groups","choices","elementId","activateOptions","choice","general","passedState","store_Store","Store","_store","__REDUX_DEVTOOLS_EXTENSION__","_proto","onChange","getChoiceById","activeChoices","getGroupById","group","selectableChoices","isActive","hasActiveOptions","dropdown_defineProperties","Dropdown","classNames","getChild","activeState","DEFAULT_CONFIG","silent","renderChoiceLimit","maxItemCount","addItems","addItemFilter","removeItems","removeItemButton","editItems","duplicateItemsAllowed","delimiter","paste","searchEnabled","searchChoices","searchFloor","searchResultLimit","searchFields","resetScrollPosition","shouldSortItems","_ref$label","value2","_ref2$label","label2","localeCompare","sensitivity","ignorePunctuation","placeholderValue","searchPlaceholderValue","prependValue","appendValue","renderSelectedChoices","loadingText","noResultsText","noChoicesText","itemSelectText","uniqueItemText","customAddItemText","addItemText","maxItemText","valueComparer","value1","fuseOptions","callbackOnInit","callbackOnCreateTemplates","containerOuter","containerInner","inputCloned","listItems","listSingle","listDropdown","itemSelectable","itemDisabled","itemChoice","groupHeading","openState","disabledState","highlightedState","selectedState","flippedState","loadingState","noChoices","EVENTS","ACTION_TYPES","KEY_CODES","TEXT_TYPE","SELECT_ONE_TYPE","SELECT_MULTIPLE_TYPE","container_Container","Container","isFlipped","isFocussed","_onFocus","_onBlur","addEventListeners","removeEventListeners","shouldFlip","dropdownPos","matchMedia","setActiveDescendant","activeDescendantID","removeActiveDescendant","addFocusState","removeFocusState","enable","disable","wrapper","utils_wrap","unwrap","addLoadingState","removeLoadingState","input_defineProperties","input_Input","Input","preventPaste","_onPaste","_onInput","blur","setWidth","_this$element","minWidth","list_List","List","scrollPos","hasChildren","hasChildNodes","scrollToTop","scrollToChildElement","listHeight","listScrollPosition","elementHeight","elementPos","_animateScroll","_scrollDown","strength","_scrollUp","choiceListScrollTop","continueAnimation","wrapped_element_defineProperties","wrapped_element_WrappedElement","WrappedElement","HTMLSelectElement","conceal","origStyle","reveal","triggerEvent","customArgs","dir","wrapped_input_defineProperties","WrappedInput","_WrappedElement","subClass","superClass","joinedValues","wrapped_select_defineProperties","WrappedSelect","template","appendDocFragment","getElementsByTagName","optionData","TEMPLATES","isSelectElement","isSelectOneElement","passedElementType","_containerOuter","_containerInner","itemList","_placeholder","_ref6","_item","isPlaceholder","deletable","REMOVE_ITEM_TEXT","removeButton","choiceList","_ref7","choiceGroup","_ref8","_ref9","selectText","isSelected","choiceDisabled","choiceSelectable","_ref12","_input","inp","autocomplete","autocapitalize","spellcheck","dropdown","_ref13","notice","_ref14","_ref15","opt","Option","choices_activateChoices","items_highlightItem","groups_addGroup","setIsLoading","choices_defineProperties","IS_IE11","USER_DEFAULTS","choices_Choices","Choices","userConfig","sourceArray","aKeys","bKeys","invalidConfigOptions","passedElement","_isTextElement","_isSelectOneElement","_isSelectMultipleElement","_isSelectElement","re","_templates","initialised","_initialState","_currentState","_prevState","_currentValue","_canSearch","_isScrollingOnIe","_highlightPosition","_wasTap","_placeholderValue","_generatePlaceholderValue","_baseId","generateId","_direction","elementDirection","_idNames","_presetGroups","optionGroups","_presetOptions","_presetChoices","_presetItems","hasAttribute","_render","_onKeyUp","_onKeyDown","_onClick","_onTouchMove","_onTouchEnd","_onMouseDown","_onMouseOver","_onFormReset","_onAKey","_onEnterKey","_onEscapeKey","_onDirectionKey","_onDeleteKey","preventExtensions","_createTemplates","_createElements","_createStructure","_addEventListeners","_removeEventListeners","clearStore","highlightItem","runEvent","_item$groupId","_item$value","_item$label","groupValue","unhighlightItem","_item$groupId2","_item$value2","_item$label2","highlightAll","unhighlightAll","removeActiveItemsByValue","_this4","activeItems","_removeItem","removeActiveItems","excludedId","_this5","removeHighlightedItems","_this6","highlightedActiveItems","_triggerChange","showDropdown","preventInputFocus","_this7","distanceFromTopWindow","hideDropdown","preventInputBlur","_this8","valueOnly","selectedItems","itemValue","_this9","_setChoiceOrItem","setChoiceByValue","_this10","_findAndSelectChoiceByValue","setChoices","choicesArrayOrFetcher","replaceChoices","_this11","ReferenceError","clearChoices","fetcher","_handleLoadingState","catch","_startLoading","groupOrChoice","_addGroup","valueKey","labelKey","_addChoice","_stopLoading","clearInput","shouldSetInputWidth","_isSearching","stateChanged","shouldRenderChoices","shouldRenderItems","_renderChoices","_renderItems","_this12","_this$_store","activeGroups","choiceListFragment","activePlaceholders","activeChoice","_createChoicesFragment","_createGroupsFragment","canAddItem","_canAddItem","response","_highlightChoice","_getTemplate","dropdownItem","itemListFragment","_createItemsFragment","_this13","groupChoices","getGroupChoices","dropdownGroup","withinGroup","_this14","_this$config","appendChoice","rendererableChoices","_rendererableChoices$","placeholderChoices","normalChoices","choiceLimit","sortedChoices","_this15","_this$config2","_selectPlaceholderChoice","placeholderChoice","_addItem","_handleButtonAction","itemId","itemToRemove","_handleItemAction","hasShiftKey","_this16","passedId","_handleChoiceAction","passedKeyCode","hasActiveDropdown","_handleBackspace","lastItem","hasHighlightedItems","setLoading","placeholderItem","_handleSearch","_this$config3","hasUnactiveChoices","resultCount","_searchChoices","isDuplicateValue","existsInArray","newValue","haystack","searchableChoices","needle","choices_filterChoices","_keyDownActions","ctrlKey","metaKey","hasFocusedInput","hasItems","keyString","BACK_KEY","DELETE_KEY","ENTER_KEY","A_KEY","ESC_KEY","UP_KEY","DOWN_KEY","PAGE_UP_KEY","PAGE_DOWN_KEY","hasCtrlDownKeyPressed","keyDownActions","backKey","deleteKey","userHasRemovedValue","canReactivateChoices","canSearch","enterKey","targetWasButton","highlightedChoice","downKey","pageUpKey","pageDownKey","nextEl","directionInt","selectableChoiceIdentifier","currentEl","startEl","Element","sibling","getAdjacentEl","stopPropagation","firstChoice","firstElementChild","isOnScrollbar","shiftKey","_focusActions","_this17","_this18","_blurActions","_this19","passedEl","_ref13$label","_ref13$choiceId","_ref13$groupId","_ref13$customProperti","_ref13$placeholder","_ref13$keyCode","passedValue","passedCustomProperties","passedLabel","passedOptionId","items_addItem","items_removeItem","_ref14$label","_ref14$isSelected","_ref14$isDisabled","_ref14$groupId","_ref14$customProperti","_ref14$placeholder","_ref14$keyCode","choiceLabel","choiceElementId","choices_addChoice","_this20","_ref15$valueKey","_ref15$labelKey","valueOf","isOptDisabled","_this$_templates$temp","userTemplates","_addPredefinedGroups","_addPredefinedChoices","_addPredefinedItems","_this21","placeholderOption","_this22","hasSelectedChoice","firstEnabledChoiceIndex","_this23","_this24","_this25","foundChoice","_this$config4","DateFormatter","formatDate","twoDigits","getDate","monthName","getMonth","getFullYear","parseAndFormat","parseIsoDate","parseHumanDate","vals","monthNames","Tool","placeholderCell","td","tableCellLink","cellPlaceholderLabel","cellPlaceholderPath","row","emptyCell","link","tableCell","addEmptyRow","tr","_typeof","_defineProperty","_objectSpread","sym","SpecialEventType","IdentifyOperation","LogLevel","Status","isBrowserEnv","fromHttpCode","code","Success","RateLimit","PayloadTooLarge","Invalid","Failed","Unknown","Skipped","fallbackGlobalObject","getGlobalObject","process","versions","globalNamespace","__AMPLITUDE__","getGlobalAmplitudeNamespace","PREFIX","Logger","_logLevel","logLevel","Warn","Verbose","Constants","logger","UTF8","utftext","Base64","_keyStr","encode","btoa","atob","unescape","_encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","decode","decodeURIComponent","escape","_decode","nodeType","Buffer","isBuffer","localStorage","logLevels","DISABLE","ERROR","WARN","INFO","_truncateValue","validateProperties","propsType","copy","keyType","validatePropertyValue","invalidValueTypes","valueType","arrayCopy","elemType","validateGroupName","groupName","groupNameType","utils","logLevelName","truncate","groupsType","expectedType","getLocation","base64Id","ca","expires","expirationDays","domain","secure","sameSite","baseCookie","cookieName","_areCookiesEnabled","getHost","href","hostname","topDomain","levels","cname","_domainSpecific","get$1","nameEq","set$1","Cookie","stored","setRaw","getRaw","setItem","getItem","removeItem","windowLocalStorageAvailable","globalStorage","attrKey","addBehavior","load","XMLDocument","_storageOptionExists","ampLocalStorage","cookieStorage","storage","getStorage","keyPrefix","storageOptionExists","MetadataStorage","storageKey","disableCookies","cookieDomain","writableTopDomain","disableCookieStorage","deviceId","optOut","sessionId","lastEventTime","eventId","identifyId","sequenceNumber","sessionStorage","getCookieStorageKey","AMP_OP_CLEAR_ALL","userPropertiesOperations","_addOperation","clearAll","prepend","setOnce","unset","operation","commonjsGlobal","createCommonjsModule","md5","safeAdd","lsw","md5cmn","q","cnt","md5ff","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","rstr2binl","length8","rstr2hex","hexTab","str2rstrUTF8","rawMD5","rstrMD5","rawHMACMD5","hash","bkey","ipad","opad","rstrHMACMD5","propIsEnumerable","toObject","objectAssign","test1","test2","test3","letter","shouldUseNative","symbols","strict","queryString","arrayFormat","encoderForArrayFormat","val2","Request","send","XDomainRequest","xdr","onload","responseText","onerror","ontimeout","onprogress","xhr","XMLHttpRequest","onreadystatechange","readyState","setRequestHeader","Revenue","_price","_productId","_quantity","_revenueType","setProductId","productId","setQuantity","quantity","setPrice","price","setRevenueType","revenueType","setEventProperties","eventProperties","_isValidRevenue","_toJSONObject","AsyncStorage","uaParser","undefined$1","FUNC_TYPE","OBJ_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","util","extend","regexes","extensions","mergedRegexes","str1","str2","lowerize","mapper","rgx","ua","arrays","regex","maps","browser","oldsafari","device","amazon","model","sprint","vendor","os","windows","cpu","engine","UAParser","uastring","getResult","navigator","userAgent","rgxmap","getBrowser","getCPU","architecture","getDevice","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","DEVICE","EMBEDDED","ENGINE","OS","jQuery","Zepto","uuid","DEFAULT_OPTIONS","apiEndpoint","batchEvents","cookieExpiration","sameSiteCookie","cookieForceUpgrade","deferInitialization","deviceIdFromUrlParam","eventUploadPeriodMillis","eventUploadThreshold","forceHttps","includeFbclid","includeGclid","includeReferrer","includeUtm","language","languages","userLanguage","logAttributionCapturedEvent","onError","savedMaxCount","saveEvents","saveParamsReferrerOncePerSession","secureCookie","sessionTimeout","trackingOptions","city","country","carrier","device_manufacturer","device_model","dma","ip_address","os_name","os_version","region","version_name","unsetParamsReferrerOnNewSession","unsentKey","unsentIdentifyKey","uploadBatchSize","AmplitudeClient","instanceName","_instanceName","_unsentEvents","_unsentIdentifys","_ua","_q","_sending","_updateScheduled","_onInit","_eventId","_identifyId","_lastEventTime","_newSession","_sequenceNumber","_sessionId","_isInitialized","_userAgent","apiKey","opt_userId","opt_config","opt_callback","_parseConfig","Prototype","toJSON","augmentedWindow","augmentedArray","prototypeJsFix","_storageSuffix","_storageSuffixV5","_oldCookiename","_unsentKey","_unsentIdentifyKey","_cookieName","_metadataStorage","hasOldCookie","hasNewCookie","_useOldCookie","hasCookie","_deferInitialization","_generateApiPropertiesTrackingConfig","_apiPropertiesTrackingOptions","tracking_options","_upgradeCookieData","_loadCookieData","_pendingReadStorage","initFromStorage","storedDeviceId","_getInitialDeviceId","_unsetUTMParams","_trackParamsAndReferrer","_validateUnsentEventQueue","_saveCookieData","_sendEventsIfReady","_loadSavedUnsentEvents","runQueuedFunctions","deleteLowerLevelDomainCookies","cookieHost","hostParts","cookieHostParts","deleteDomain","configDeviceId","_getDeviceIdFromUrlParam","_getUrlParams","queue","userProperties","user_properties","event_properties","_migrateUnsentEvents","unsentEventsString","itemsToSet","itemsToRemove","utmProperties","referrerProperties","gclidProperties","fbclidProperties","_initUtmData","_saveReferrer","_getReferrer","_saveGclid","_saveFbclid","attributionProperties","parseValidateAndLoad","_apiKeySet","methodName","savedUnsentEventsString","_getFromStorage","unsentEvents","_parseSavedUnsentEventsString","_setInStorage","isNewSession","onInit","getSessionId","nextEventId","nextIdentifyId","nextSequenceNumber","_unsentCount","sendEvents","cookieData","_loadCookieDataProps","queryParams","cookieParams","rawCookie","fetchParam","utmSource","utmMedium","utmCampaign","utmTerm","utmContent","utmData","addIfNotNull","queryName","_sendParamsReferrerUserProperties","referrer","urlParams","gclid","fbclid","_getReferringDomain","referrerInfo","referring_domain","serializedUnsentEvents","serializedIdentifys","unsentIdentify","setDomain","_shouldDeferCall","setGroup","groupType","_logEvent","setOptOut","setSessionId","resetSessionId","regenerateDeviceId","setDeviceId","setUserProperties","sanitized","clearUserProperties","_convertProxyObjectToRealObject","identify_obj","groupIdentify","group_type","group_name","setVersionName","versionName","apiProperties","groupProperties","eventTime","osName","osVersion","deviceModel","device_id","user_id","event_id","session_id","event_type","_shouldTrackField","api_properties","library","sequence_number","group_properties","user_agent","_limitEventsQueued","fields","logEventWithTimestamp","logEventWithGroups","_isNumber","logRevenueV2","revenue_obj","logRevenue","product","special","removeEvents","maxEventId","maxIdentifyId","_removeEvents","eventQueue","maxId","filteredEvents","unsentEvent","protocol","numEvents","mergedEvents","_mergeEventsAndIdentifys","eventsToSend","uploadTime","client","upload_time","checksum","eventIndex","identifyIndex","noIdentifys","noEvents","setGlobalUserProperties","__VERSION__","_initializationDeferred","enableTracking","Amplitude","_instances","old","newInstance","_iq","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","env","argv","on","once","off","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","encodingOrOffset","allocUnsafe","ArrayBuffer","byteOffset","byteLength","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","buffer","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","dst","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","prepare_header_search","set_lazy_image_url","image","prepare_lazy_load","images","IntersectionObserver","isIntersecting","unobserve","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","isCollapsed_","isAlwaysCollapsed_","setAlwaysCollapsed","collapse_","maybeCollapseBar_","getAlwaysCollapsed","uncollapse_","MDCTopAppBar","navIcon_","icons","iconRipples_","scrollTarget_","handleNavigationClick_","handleWindowResize_","handleTargetScroll_","iconRipple","setScrollTarget","win","ANIMATE","DISMISSIBLE","MODAL","APP_CONTENT_SELECTOR","CLOSE_EVENT","OPEN_EVENT","MDCDismissibleDrawerFoundation","elementHasClass","focusActiveNavigationItem","isOpening","isClosing","isElement_","closed_","opened_","MDCModalDrawerFoundation","handleScrimClick","MDCDrawer","listEl","scrim_","handleScrimClick_","handleTransitionEnd_","previousFocus_","activeNavItemEl","drawer","topAppBar","headers","ok_clicked","dataLayer","gtag","append_quantcast","confirm_button","cookie_message","link_to_more","append_cookie_message","script","async","append_quantcast_if_verified","append_cookie_message_if_not_verified","__WEBPACK_EXTERNAL_MODULE__43__","inherit","TYPE_DATE","TYPE_MONTH","TYPE_YEAR","TYPE_HOUR","TYPE_MINUTE","TYPE_MERIDIEM","MIN_DATE","MAX_DATE","DEFAULT_LANGUAGE_TYPE","CLASS_NAME_SELECTED","CLASS_NAME_PREV_MONTH_BTN","CLASS_NAME_PREV_YEAR_BTN","CLASS_NAME_NEXT_YEAR_BTN","CLASS_NAME_NEXT_MONTH_BTN","DEFAULT_WEEK_START_DAY","WEEK_START_DAY_MAP","sun","mon","tue","wed","thu","fri","sat","iteratee","searchElement","startIndex","forEachArray","isHTMLNode","sendHostname","currentId","ev","srcElement","getSelector","elem","sendHostName","isDate","constants","getWeeksCount","firstDay","getFirstDay","lastDate","getLastDayInMonth","isValidDate","getDay","getFirstDayTimestamp","prependLeadingZero","getMeridiemHour","getSafeNumber","any","defaultNumber","getDateOfWeek","weekNumber","dayNumber","firstDayOfMonth","getRangeArr","cloneWithStartOf","setHours","setDate","setMonth","cloneWithEndOf","dateA","dateB","cmpLevel","aTimestamp","bTimestamp","isSame","objects","hasOwnProp","isExisty","isString","R_EVENTNAME_SPLIT","CustomEvents","contexts","mixin","_getHandlerItem","_safeEvent","eventName","byName","_safeContext","_indexOfContext","_memorizeContext","_forgetContext","contextIndex","_bindEvent","onceHandler","_spliceMatches","predicate","_matchHandler","needRemove","_matchContext","_matchHandlerAndContext","matchHandler","matchContext","_offByEventName","andByHandler","handlerItems","_offByHandler","_offByObject","matchFunc","fire","invoke","hasListener","getListenerLength","forEachOwnProperties","en","titles","DD","MMM","MMMM","titleFormat","todayFormat","ko","inArray","EXPRESSION_REGEXP","BRACKET_NOTATION_REGEXP","BRACKET_REGEXP","DOT_NOTATION_REGEXP","DOT_REGEXP","STRING_NOTATION_REGEXP","STRING_REGEXP","NUMBER_REGEXP","BLOCK_HELPERS","exps","sourcesInsideBlock","analyzed","ifExps","sourcesInsideIf","otherIfCount","extractElseif","compiledSource","handleExpression","compile","collection","additionalKey","additionalContext","asIndex","alias","splitByRegExp","regexp","getValueFromContext","splitedExps","handleBlockHelper","helperKeyword","sourcesToEnd","endBlockIndex","executeBlockHelper","helperCount","startBlockIndex","expression","helper","argExps","executeFunction","firstExp","getClass","setClassName","cssClass","newClass","cls","isUndefined","baseVal","mouseTouchEvent","_isMobile","_getEventType","defineClass","removeElement","localeText","LayerBase","_localeText","_makeContext","throwOverrideError","getDateElements","changeLanguage","layerType","getData","TimePicker","Calendar","RangeModel","localeTexts","dateUtil","tmpl","DatePickerInput","CLASS_NAME_SELECTABLE","CLASS_NAME_BLOCKED","CLASS_NAME_CHECKED","CLASS_NAME_SELECTOR_BUTTON","CLASS_NAME_TODAY","CLASS_NAME_HIDDEN","DatePicker","static","calendar","timePicker","showAlways","selectableRanges","openers","autoClose","usageStatistics","weekStartDay","timepicker","mergeDefaultOption","_language","_container","isTab","layoutType","_calendar","_timePicker","_datepickerInput","_rangeModel","_openers","_isEnabled","_id","_initializeDatePicker","setRanges","_setEvents","_initTimePicker","setInput","setDateFormat","addOpener","_hide","_onClickHandler","_onDrawCalendar","_setDocumentEvents","_onMousedownDocument","_removeDocumentEvents","_setOpenerEvents","opener","_removeOpenerEvents","opTimePicker","prevDate","_changePicker","selectedBtn","_isOpener","_setTodayClassName","getCalendarType","_setSelectableClassName","elDate","_isSelectableOnCalendar","_setSelectedClassName","_isSelectedOnCalendar","hasOverlap","curDate","calendarType","_show","_syncToInput","_syncFromInput","shouldRollback","isFailed","isSelectable","getHours","getMinutes","setNull","isContain","isInput","is","isInOpener","_updateDate","drawUpperCalendar","newDate","drawLowerCalendar","getHour","getMinute","eventData","dateElements","_setDisplayHeadButtons","nextMonthDate","prevMonthDate","nextMonBtn","prevMonBtn","nextYearDate","getNextYearDate","prevYearDate","getPrevYearDate","maxTimestamp","getMaximumValue","minTimestamp","getMinimumValue","nextYearBtn","prevYearBtn","getNextDate","getPrevDate","_setDisplay","shouldShow","_onChangeInput","_isChanged","_refreshFromRanges","ranges","setType","addRange","removeRange","exclude","removeOpener","removeAllOpeners","isOpened","isValidInput","calendarDate","isChagned","clearText","setFormat","getTimePicker","getCalendar","getLocaleText","prevFormat","getFormat","syncFromInput","addCssClass","removeCssClass","findOverlappedRange","startDate","endDate","startTimestamp","endTimestamp","overlappedRange","changeLocaleTitles","convertToKebabCase","Header","Body","CLASS_NAME_CALENDAR_MONTH","CLASS_NAME_CALENDAR_YEAR","showToday","showJumpButtons","_header","_body","_initHeader","_initBody","headerContainer","drawPrev","_onClickPrevYear","drawNext","_onClickNextYear","bodyContainer","_getRelativeDate","_isValidType","_shouldUpdate","rFormableKeys","mapForConverting","yyyy","yy","MM","mmm","mmmm","dd","hh","HH","mm","DateTimeFormatter","rawStr","_rawStr","_keyOrder","_regExp","_titles","_parseFormat","regExpStr","matchedKeys","keyOrder","matched","dateHash","hasMeridiem","isPM","getRawString","dateObj","replaceMap","dayInMonth","meridiem","safeEvent","bindEvent","eventHandler","attachEvent","wrappedHandler","existInEvents","memorizeHandler","types","EVENT_KEY","handlers","unbindEvent","removeHandler","detachEvent","DateRangePicker","createCalendar","wrapperElement","createRangePicker","createObject","subType","superType","isNull","toArray","elProto","matchSelector","mozMatchesSelector","doc","ownerDocument","arrayLike","headerTmpl","_innerElement","_infoElement","_showToday","_showJumpButtons","_yearMonthTitleFormatter","_yearTitleFormatter","_todayFormatter","_setFormatters","_getTitleClass","_getTitleText","currentYear","todayText","isDateCalendar","titleClass","html","imagePing","appName","trackingId","applicationKeyForStorage","tui","tid","cid","dh","ec","trackingInfo","trackingElement","DateLayer","MonthLayer","YearLayer","_dateLayer","_monthLayer","_yearLayer","_currentLayer","_getLayer","_eachLayer","layer","nextLayer","bodyTmpl","days","daysShort","Sun","Mon","Tue","Wed","Thu","Fri","Sat","weeks","_getWeeks","dates","weekIndex","weeksCount","_getWeek","_getFirstWeek","currentMonth","firstDateOfCurrentMonth","lastDateOfCurrentMonth","firstWeekDates","monthsShort","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","yearGroups","Range","_ranges","isOverlapped","overlapped","rangeEnd","isEmpty","setRange","setEmpty","inputElement","_formatter","_onChangeHandler","CLASS_NAME_RANGE_PICKER","CLASS_NAME_SELECTED_RANGE","startpickerOpt","endpickerOpt","startpicker","endpicker","_startpicker","_endpicker","_initializePickers","_syncRangesToEndpicker","startpickerContainer","endpickerContainer","startInput","endInput","_onChangeStartpicker","_onDrawPicker","_onChangeEndpicker","isInRange","_setRangeClass","_setSelectedClass","getStartpicker","getEndpicker","setStartDate","getStartDate","getEndDate","setEndDate","PercentFormat","calculatePercentage","amnt","SecurityListItem","data_or_element","security","prepareElement","editMode","htmlForSelection","companyImage","companyNameAndQuantity","companyIconAndInput","graphic","prepareInput","editComplete","beginEdit","editModeOff","selectedSecuritiesUpdated","SelectedSecuritiesList","watchlist","selectedRow","prepareMenu","prepareExistingWatchlist","prepareRow","showEditInput","removeSelectedRow","addSecurity","securityRowClicked","removeEditModeOnAllRows","securitySelected","removeRow","InfiniteScroll","base_url","caller","wholePageScroll","finished","page","loadNextPage","cutoff","calculateCutoff","documentScrolled","loadingAnimation","handleResponse","receiveData","showLoadingAnimation","dataReceived","V3_URL","V3_URL_REGEX","EXISTING_SCRIPT_MESSAGE","stripePromise","loadScript","reject","Stripe","scripts","findScript","advancedFraudSignals","headOrBody","injectScript","initStripe","maybeStripe","startTime","stripe","_registerWrapper","registerWrapper","stripePromise$1","loadCalled","isUpdatingCreditCard","prepareForm","prepareStripe","createPaymentMethod","loadStripe","stripePk","card","cardElementStyle","mount","cardDetailsChanged","setErrorMessage","removeErrors","resetForm","showSuccessMessage","formLoading","paymentMethodCreated","paymentMethod","saveCreditCard","createSubscription","saveCreditCardComplete","completedSuccessfully","confirmCardSetup","createSubscriptionComplete","client_secret","payment_method","setDefaultPaymentMethod","subscription","confirmCardPayment","latest_invoice","payment_intent","formSubmitted","clearForm","ACTIVATED","MENU_INVALID","REQUIRED","SELECTED_ITEM_CLASS","ARIA_SELECTED_ATTR","CHANGE_EVENT","MENU_SELECTOR","SELECTED_ITEM_SELECTOR","SELECTED_TEXT_SELECTOR","SELECT_ANCHOR_SELECTOR","VALUE_ATTR","MDCSelectFoundation","menuItemValues","isMenuOpen","useDefaultValidation","customValidity","activateBottomLine","deactivateBottomLine","getSelectedMenuItem","notifyChange","setSelectedText","isSelectAnchorFocused","getSelectAnchorAttr","setSelectAnchorAttr","removeSelectAnchorAttr","addMenuClass","removeMenuClass","openMenu","closeMenu","getAnchorElement","setMenuAnchorElement","setMenuAnchorCorner","setMenuWrapFocus","setAttributeAtIndex","focusMenuItemAtIndex","getMenuItemValues","getMenuItemTextAtIndex","getMenuItemAttr","addClassAtIndex","removeClassAtIndex","removeSelectionAtIndex","setSelectionAtIndex","handleChange","getDisabled","optionHasValue","shouldFloatAndNotch","layoutOptions","handleMenuOpened","focusItemIndex","handleMenuClosed","handleMenuItemAction","arrowUp","arrowDown","typeaheadNextIndex","labelScale","setUseDefaultValidation","getRequired","anchorEl","BOTTOM_START","HELPER_TEXT_VALIDATION_MSG_PERSISTENT","MDCSelectHelperTextFoundation","setValidationMsgPersistent","selectIsValid","isPersistentValidationMsg","MDCSelectHelperText","MDCSelectIconFoundation","MDCSelectIcon","MDCSelect","menuFactory","selectAnchor","selectedText","helperTextElement","menuSetup","lineRipple","outline","createRipple","getNormalizedXCoordinate","getSelectAdapterMethods","getCommonAdapterMethods","getOutlineAdapterMethods","getLabelAdapterMethods","getFoundationMap","menuElement","menuItem","attributeValue","removeAttributeAtIndex","isTouchEvent","foundationForSelect","uniqueId","getUniqueId","formatTime","Spinbox","Selectbox","meridiemTmpl","SELECTOR_MERIDIEM_ELEMENT","INPUT_TYPE_SPINBOX","INPUT_TYPE_SELECTBOX","initialHour","initialMinute","showMeridiem","inputType","hourStep","minuteStep","meridiemPosition","disabledHours","mergeDefaultOptions","_meridiemElement","_amEl","_pmEl","_showMeridiem","_meridiemPosition","_hourInput","_minuteInput","_hour","_minute","_hourStep","_minuteStep","_disabledHours","_inputType","_getValidTimeFormat","_onChangeTimeInput","_onChangeMeridiem","isSpinbox","meridiemElement","_makeMeridiemHTML","_renderTimeInputs","_setMeridiemElement","_syncToMeridiemElements","am","pm","radioId","hourElement","minuteElement","BoxComponent","formatExplode","hourItems","_getHourItems","initialValue","disabledItems","_makeDisabledStatItems","_getMinuteItems","_meridiemableTime","diffHour","startHour","endHour","selectedEl","notSelectedEl","_syncToInputs","_to24Hour","_setDisabledHours","setDisabledItems","_validItems","setHourStep","getHourStep","setMinuteStep","getMinuteStep","setHour","setMinute","_inputElement","_items","_disabledItems","_selectedIndex","_findEnabledIndex","_getMaxLength","lengths","_changeToInputValue","_onKeydownInputElement","_setNextValue","isDown","which","_changeEnabledIndex","_removeElement","_setNewValue","writeDianomiScript","contextId","dianomiContextId","renderAd","shouldRenderAd","trustpilot_lazy_load","horizontalScrollbarHeight_","ANIMATING","SCROLL_AREA_SCROLL","SCROLL_TEST","AREA_SELECTOR","MDCTabScrollerRTL","MDCTabScrollerRTLDefault","getScrollPositionRTL","currentScrollLeft","getScrollAreaScrollLeft","calculateScrollEdges_","scrollToRTL","scrollX","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","animate_","getIncrementScrollOperation_","incrementScrollImmediate","scrollTo","scrollToRTL_","scrollTo_","getRTLScroller","rtlScrollerInstance_","rtlScrollerFactory_","transformValue","matrixParams","tx","currentScrollX","safeScrollX","targetScrollX","getAnimatingScrollPosition_","scrollLeft","initialScrollLeft","newScrollLeft","rootClientRect","contentClientRect","rightEdgeDelta","MDCTabScroller","area_","handleInteraction_","propName","documentObj","shouldCacheResult","getScrollContentWidth","INTERACTED_EVENT","RIPPLE_SELECTOR","TABINDEX","TAB_INDICATOR_SELECTOR","MDCTabFoundation","focusOnActivate_","activateIndicator","deactivateIndicator","notifyInteracted","getOffsetLeft","getOffsetWidth","getContentOffsetLeft","getContentOffsetWidth","setFocusOnActivate","focusOnActivate","computeDimensions","rootWidth","rootLeft","contentLeft","contentRight","rootRight","MDCTab","tabIndicatorFactory","rippleSurface","rippleAdapter","rippleFoundation","ripple_","tabIndicatorElement","tabIndicator_","tabId","computeIndicatorClientRect","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","END_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_","isRTL","setActiveTab","activateTabAtIndex","deactivateTabAtIndex","focusTabAtIndex","getTabIndicatorClientRectAtIndex","getTabDimensionsAtIndex","getPreviousActiveTabIndex","getFocusedTabIndex","getIndexOfTabById","getTabListLength","notifyTabActivated","setUseAutomaticActivation","useAutomaticActivation","activateTab","previousClientRect","previousActiveIndex","indexIsInRange_","scrollIntoView","getKeyFromEvent_","isActivationKey_","determineTargetFromKey_","focusedTabIndex","handleTabInteraction","scrollIntoViewRTL_","scrollIntoView_","maxIndex","calculateScrollIncrement_","scrollPosition","barWidth","nextTabDimensions","relativeContentLeft","leftIncrement","rightIncrement","calculateScrollIncrementRTL_","scrollContentWidth","findAdjacentTabIndexClosestToEdge_","tabDimensions","relativeRootLeft","relativeRootRight","relativeRootDelta","findAdjacentTabIndexClosestToEdgeRTL_","rootDelta","scrollIncrement","tabIdCounter","MDCTabBar","tabList_","tab","tabFactory","tabScrollerFactory","instantiateTabs_","tabScroller_","instantiateTabScroller_","handleTabInteraction_","tabElements","getTabElements_","tabScrollerElement","prepare_banner","banner","resendEmail","resend_confirmation_email","close_banner","require","columnFromTable","table_id","column","tableLabels","accuracyValues","buildProjectionsChart","stopPropogation","yAxes","NotificationsTable","selectedList","prepareSearch","preparePopular","prepareButtons","prepareSignupForm","errorBox","popularList","addNotificationRow","addNotification","scrollToWatchListSecurity","showSaveButton","saveButtonClicked","copyToPortfolioButtonClicked","validateAgreeToNotifications","submitWatchlistForm","isUserFormVisible","validateAndSubmitUserForm","displayUserForm","hideUserForm","email_field","validateUserForm","submitUserForm","password_field","validateAgreeToTerms","submitForm","userFormData","watchlistFormData","loadingIcon","doneIcon","handlePostResponse","updateTextWithCounts","hideSaveButton","addParam","field_id","addNotificationCheckboxParams","popup","copyToPortfolio","showAccountExpiredPopup","showActivateSubscriptionPopup","selectedInterval","paymentOptionSelected","cc","prepare_form","MDCCheckbox","RegisterForm","addCheckBoxListeners","prepareTextFields","prepareCheckbox","checkBoxClicked","isFreeTrialChecked","isNotificationEmailsChecked","isFridayEmailsChecked","emailField","prepareTextField","passwordField","textBoxKeyPress","submittedvalue","removeAllErrors","email","isAgreeToTermsChecked","noOptionSelected","showError","submit","msg","LoginForm","prepareFormSubmit","setSubmitButtonDisabledState","triggerFormSubmit","PasswordResetForm","recaptchaLoading","prepareSubmitButton","RequestAddCompanyForm","selectedSector","selectedCountry","prepareFilterMenus","sectorsMenuLink","countriesMenuLink","sectorsMenu","applyFilters","countriesMenu","setTableContent","MyAccount","addShowButtonListener","addCancelButtonListener","prepareDeactivateButton","deactivateAccount","accountDeactivated","revealFormClicked","modalContainer","cancelButtonClicked","creditCardUpdated","titleize","brand","cardExpiry","last4","MONTHS","exp_month","exp_year","prepareCountdown","prepareSelectOptions","prepareNavigationButtons","prepareTable","dateValue","runCountdownQuery","prepareSortButton","prevButton","setNavigationButtonStatus","nextButton","countrySelect","prepareSelect","indexSelect","sectorSelect","queryUrl","addRow","dividends","nameCell","tickerCell","amountCell","reload","emptyTab","scrollToContent","setPortfolioValue","portfolio","val_p","notLoggedIn","loginSignupButtons","freeAccount","activateAccountButton","emailNotVerified","accountExpired","paymentButton","currencyInput","currency_select","downloadCurrencies","currencies","buildCurrencyOptions","addCurrencyOption","currencySelected","isSelectedCurrency","transaction","portfolioCurrency","selectedCurrencyField","selectCurrencyOption","showErrors","portfolioFormParameters","paragraph","nameInput","balanceInput","ob","balance","submitButton","submitClicked","currencyHasChanged","showChangeCurrencyMessage","receiveResponse","cancelClicked","processResponse","buildPage","addTabContent","can_edit","renderChart","wl","wv","sl","sv","addPortfolioTitle","addNumberBoxes","addCashPerformance","addPieCharts","portfolioTitle","menuAndIcon","shouldShowHideIcon","hideIcon","numberBox","cap_gain","cap_gain_p","dividends_p","total_gain","total_gain_p","numberBoxPercent","class2","performanceRow","purchases","sales","deposits","withdrawals","setNowLinkIfNull","setBalanceButton","showModifyPortfolioForm","buildChartCanvas","canvasWithId","currency_unit","tooltipEl","showConfirmHidePortfolio","hideDemoPortfolio","menuIcon","menuItems","tabindex","deletePortfolioClicked","deletePortfolio","build","securitySearchInput","addingToNewPortfolio","buildTabContent","downloadHoldings","addSelectedSearchResult","receiveHoldings","holdings","holding","share_id","addSecurities","securities","securityListItem","appendTitleCell","appendSelectedListCell","appendSecuritiesListCell","selectedSecurityMenu","empty","submitButtonClicked","formComplete","securitySearchForm","appendPopularSecuritiesList","checkNotExistingHolding","scrollToSelectedSecurity","selectedSecurityRowClicked","addQuantityToParams","defaultPortfolioName","loadSelectedTab","addPortfolioToList","portfolioClicked","buildContent","subtitle","addForm","share","formUrl","no_trans","cannotModifyMessage","quantityInput","outlayOrAveragePriceInput","dividendsReceivedInput","currentValueBox","formInput","quantityUpdated","outlayInput","averagePriceInput","toutlay","outlayUpdated","outlay","tavg_price","averagePriceUpdated","average","tdivs_rec","setCurrentValue","isMoney","formParams","pr_lo","avg","formSuccess","formError","buildMenu","logo","mainContent","titleRow","tickerAndFlag","valueBoxes","extraValues","expandIcon","showEditHolding","confirmRemoveHolding","tickerLink","share_path","outlayCard","capitalGainCard","dividendsCard","performanceCard","marketValueCard","valueCard","holdingOutlayNotSet","tcap_gain","tcap_gain_p","divs_rec","tdivs_rec_p","divs_rec_p","ttot_gain","tot_gain","ttot_gain_p","tot_gain_p","cur_val","main_value","second_value","is_percent_gain","percentChange","negative","changeIcon","arrowClass","cols","extraColumn1","extraColumn2","next_div","nextDividend","showCumulative","detailRow","avg_price","currentPriceRow","since","sector","sold","format_money","cur_price","col1","col2","st","ex","pa","payment","tc","removeHolding","holdingsList","portfolioValueCard","addButton","mkt_val","addHoldings","addHoldingClicked","addHolding","addEmptyMessage","dividend","imageBox","middlePart","rightPart","sn","shares","tk","pd","est","qty","popupContent","popupTable","popupTableBody","tableRow","ty","xd","lt","lc","th","ln","annualTotalBoxes","yearData","years","emptyMessage","newLink","showNewAddHoldingForm","annualTotalCard","labelForTotal","AddHoldingForm","monthData","totalRow","monthHeader","dividendRow","spacerRow","period","months","transactionDateInput","transactionDateField","textInput","transactionDate","prepareDatePicker","loadExchangeRate","MAX_INTEGER","quantityError","updateTotal","inputHelperText","priceAndCurrencyInput","priceInput","moneyInputField","exchangeRateInput","numberInputField","exchangeRate","commissionInput","stampDutyInput","numberInput","textfield","MAX_PRICE","emptySelect","totalBox","formButtons","submitButtonTitle","priceInputLabel","updateCurrencySymbols","transactionsNotLoaded","transactionCurrencyField","setExchangeRate","rate","setFieldValue","parseFloatValueOf","updateStampDuty","commission","stamp_duty","validateCommonFormFields","validateIntegerValue","validatePrice","money_amount","display_max","sd","type_class","gridContent","populateForm","pageTitle","share_name","editTransactionForm","showExchangeRateInput","validateForm","handleFormResponse","fdate","cmsn","fx","stmp","includeBalance","canEdit","nameAndImage","numberClass","showTransactionPopup","showMenu","editButton","deleteButton","showEditTransaction","confirmRemoveTransaction","tableDiv","removeTransaction","stype","transactionCurrencyCode","divs","appendStep1Content","appendStep1Buttons","appendStep1Option","listSeparator","close_bal","transactionTypeSelected","checkbox","listCheckbox","bg","appendStep2Content","prepareStep2","step2","formTitle","selectShareInput","warningMessage","newTransactionForm","suggestedShareSelected","loadHoldingList","warning","selectHoldingInput","selectHoldingOptions","holdingsSelect","holdingSelected","holdingOption","holdingId","setSelectedOption","setWarningMessageVisible","shown","share_or_holding","pr","curid","buttonsAndBalance","transactions","transactionContainer","holdingsDiv","bottomBar","closingBalance","transactionList","transactionTable","tableHeader","tableBody","headerRow","transactionRow","open_bal","holdingsContainer","holdingsTable","holdingsTableHeader","holdingsTableBody","holdingsHeaderRow","holdingRow","openingBalance","balanceRow","addTransactionButton","exportTransactionsButton","loadNewTransactionForm","exportTransactionsClicked","exportUrl","showNotPaidPopup","paymentLinks","closePopup","activeTab","whatIsActiveTab","prepareTabs","preparePortfolios","addPortfolioButtonClicked","preparePortfolio","canAccessPortfolios","setPortfolioActive","showRestrictionPopup","portfolioCard","tabBar","generatorTabClicked","loadTab","loadNewPortfolio","loadOverview","loadHoldings","loadFutureIncome","loadTransactions","navigateTo","history","pushState","AnnouncerPriority","InteractionTrigger","Announcer","liveRegions","say","POLITE","liveRegion","getLiveRegion","clearLiveRegion","existingLiveRegion","createLiveRegion","overflow","Direction","EventSource","INTERACTION_EVENT","TAB_INDEX","MDCChipTrailingActionFoundation","notifyInteraction","notifyNavigation","CLICK","shouldNotifyInteractionFromKey_","getTriggerFromKey_","removeFocus","isNavigable","isFromActionKey","isFromDeleteKey","SPACEBAR_KEY","BACKSPACE_KEY","UNSPECIFIED","MDCChipTrailingAction","ADDED_ANNOUNCEMENT_ATTRIBUTE","ARROW_DOWN_KEY","ARROW_UP_KEY","CHECKMARK_SELECTOR","ENTRY_ANIMATION_NAME","IE_ARROW_DOWN_KEY","IE_ARROW_LEFT_KEY","IE_ARROW_RIGHT_KEY","IE_ARROW_UP_KEY","IE_DELETE_KEY","PRIMARY_ACTION_SELECTOR","REMOVED_ANNOUNCEMENT_ATTRIBUTE","REMOVAL_EVENT","SELECTION_EVENT","TRAILING_ACTION_SELECTOR","TRAILING_ICON_INTERACTION_EVENT","CHECKMARK","CHIP_EXIT","DELETABLE","EDITABLE","EDITING","HIDDEN_LEADING_ICON","LEADING_ICON","PRIMARY_ACTION","PRIMARY_ACTION_FOCUSED","SELECTED","TEXT","TRAILING_ACTION","TRAILING_ICON","jumpChipKeys","FocusBehavior","emptyClientRect","MDCChipFoundation","shouldRemoveOnTrailingIconClick_","shouldFocusPrimaryActionOnClick_","addClassToLeadingIcon","eventTargetHasClass","focusPrimaryAction","focusTrailingAction","getCheckmarkBoundingClientRect","getComputedStyleValue","getRootBoundingClientRect","hasLeadingIcon","isTrailingActionNavigable","notifyEditFinish","notifyEditStart","notifyRemoval","notifySelection","notifyTrailingIconInteraction","removeClassFromLeadingIcon","removeTrailingActionFocus","setPrimaryActionAttr","setStyleProperty","isEditable","isEditing","setSelected","setSelected_","notifySelection_","setSelectedFromChipSet","shouldNotifyClients","notifyIgnoredSelection_","getShouldRemoveOnTrailingIconClick","setShouldRemoveOnTrailingIconClick","shouldRemove","setShouldFocusPrimaryActionOnClick","shouldFocus","getDimensions","getRootRect","checkmarkRect","rootRect","beginExit","setPrimaryActionFocusable_","getFocusBehavior_","handleDoubleClick","startEditing","shouldHandle","widthIsAnimating","opacityIsAnimating","chipWidth_1","removedAnnouncement","shouldHideLeadingIcon","shouldShowLeadingIcon","eventFromPrimaryAction_","finishEditing","handleTrailingActionInteraction","removeChip_","shouldStartEditing","shouldNotifyInteraction_","isDeleteAction_","focusNextAction_","PRIMARY","shouldFinishEditing","handleTrailingActionNavigation","TRAILING","SHOULD_FOCUS","focusBehavior","SHOULD_NOT_FOCUS","getDirection_","LEFT","MDCChip","trailingActionFactory","checkmark_","primaryAction_","trailingActionEl","trailingAction_","handleTrailingActionInteraction_","handleTrailingActionNavigation_","handleFocusIn_","handleFocusOut_","chipId","shouldIgnore","CHIP_SELECTOR","CHOICE","FILTER","MDCChipSetFoundation","selectedChipIds_","announceMessage","focusChipPrimaryActionAtIndex","focusChipTrailingActionAtIndex","getChipListCount","getIndexOfChipById","removeChipAtIndex","removeFocusFromChipAtIndex","selectChipAtIndex","getSelectedChipIds","select_","handleChipInteraction","removeFocusFromChipsExcept_","toggleSelect_","handleChipSelection","chipIsSelected","deselect_","handleChipRemoval","deselectAndNotifyClients_","handleChipNavigation","focusChipAction_","shouldJumpChips","chipIndex","selectAndNotifyClients_","chipCount","previouslySelectedChip","previouslySelectedIndex","idCounter","MDCChipSet","chips_","chipFactory","chipFactory_","instantiateChips_","chip","handleChipInteraction_","handleChipSelection_","handleChipRemoval_","handleChipNavigation_","addChip","chipEl","findChipIndex_","selectedIndexIds","tooltips","loading_icon","regionSelect","regionSelected","toggleSelectedIndices","region_id","selectedRegion","setVisibleIndices","downloadDividendData","setIndexVisibility","setSelectedIndexIds","chips","toggleRowForIndex","isRowIndexSelected","ids","indexIds","emptyTable","setTableRows","rows","childRow","ind","linkToCompany","rowCell","cell","mic","amountAndArrow","xdd","createTextNode","optimizerUrl","ann_yield","ex_date","countdownUrl","linkToWatchlist","addPortfolioClickListener","checkSubmitForm","formSubmitComplete","appendValueToParams","mainBox","companyName","companyDetails","parentWithClass","leftColumn","rightColumn","divsWithLabelAndValue","market_cap","detailTable","demo","divWithText","datesAndYields","dividendsTable","datesTable","yieldTable","tableValue","tot_yield","cadi","fdi","cover","tHeadRow","thead","pay_date","dividendAmount","damount","dcur","extraClass","valueEl","durationSelect","marketCapSelect","coverSelect","cadiSelect","fdiSelect","runOptimizerQuery","securityRow","jsEventTypeMap","animationend","cssProperty","prefixed","standard","animationiteration","animationstart","transitionend","isWindow","getCorrectEventName","ANIM_CHECKED_INDETERMINATE","ANIM_CHECKED_UNCHECKED","ANIM_INDETERMINATE_CHECKED","ANIM_INDETERMINATE_UNCHECKED","ANIM_UNCHECKED_CHECKED","ANIM_UNCHECKED_INDETERMINATE","BACKGROUND","CHECKED","CHECKMARK_PATH","MIXEDMARK","NATIVE_CONTROL","UPGRADED","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","isIndeterminate","removeNativeControlAttr","setNativeControlAttr","setNativeControlDisabled","determineCheckState_","updateAriaChecked_","handleAnimationEnd","transitionCheckState_","oldState","newState","getTransitionAnimationClass_","CB_PROTO_PROPS","nativeControl_","indeterminate","handleChange_","handleAnimationEnd_","installPropertyChangeHooks_","uninstallPropertyChangeHooks_","nativeCb","cbProto","controlState","desc","validDescriptor","nativeGetter","nativeCbDesc","inputPropDesc"],"mappings":"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","file":"js/application-dcfcee62404537618fb5.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-staging.dividendmax.com/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\n/* global Reflect, Promise */\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 (b.hasOwnProperty(p)) d[p] = b[p];\n };\n\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\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\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\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\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\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\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) 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\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport function __createBinding(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}\nexport function __exportStar(m, exports) {\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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\n return ar;\n}\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n\n return ar;\n}\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n\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\n return r;\n}\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\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\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\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\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\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\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\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\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\n return cooked;\n}\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result.default = mod;\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n}","import {MDCTextField} from '@material/textfield'\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 money_input_field = (label, name, value, symbol, 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 el.append element_with_content('span', symbol, 'mdc-text-field__affix', 'mdc-text-field__affix--prefix', 'currency-symbol')\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.setAttribute 'pattern', \"[0-9\\\\.]*\"\n input.setAttribute 'inputmode', \"decimal\"\n input.value = value\n el.append input\n floatingLabel = element_with_content('span', label, 'mdc-floating-label')\n el.append floatingLabel\n el.append element_with_class('span', 'mdc-line-ripple')\n el\n\nexport 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\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 * @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 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 strings = {\n ACTION_EVENT: 'MDCList:action',\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 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 \",\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 \",\n RADIO_SELECTOR: 'input[type=\"radio\"]'\n};\nvar numbers = {\n UNSET_INDEX: -1,\n TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS: 300\n};\nexport { strings, cssClasses, numbers };","/**\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 =\n/** @class */\nfunction () {\n function MDCFoundation(adapter) {\n if (adapter === void 0) {\n adapter = {};\n }\n\n this.adapter = adapter;\n }\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: true,\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: true,\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: true,\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: true,\n configurable: true\n });\n\n MDCFoundation.prototype.init = function () {// Subclasses should override this method to perform initialization routines (registering events, etc.)\n };\n\n MDCFoundation.prototype.destroy = function () {// Subclasses should override this method to perform de-initialization routines (de-registering events, etc.)\n };\n\n return MDCFoundation;\n}();\n\nexport { MDCFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\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, __spread } from \"tslib\";\nimport { MDCFoundation } from './foundation';\n\nvar MDCComponent =\n/** @class */\nfunction () {\n function MDCComponent(root, foundation) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n this.root = root;\n this.initialize.apply(this, __spread(args)); // Note that we initialize foundation here and not within the constructor's default param so that\n // this.root_ is defined and can be used within the foundation class.\n\n this.foundation = foundation === undefined ? this.getDefaultFoundation() : foundation;\n this.foundation.init();\n this.initialSyncWithDOM();\n }\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\n\n MDCComponent.prototype.initialize = function () {\n var _args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\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\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\n MDCComponent.prototype.initialSyncWithDOM = function () {// 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\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\n MDCComponent.prototype.listen = function (evtType, handler, options) {\n this.root.addEventListener(evtType, handler, options);\n };\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\n\n MDCComponent.prototype.emit = function (evtType, evtData, shouldBubble) {\n if (shouldBubble === void 0) {\n shouldBubble = false;\n }\n\n var evt;\n\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\n this.root.dispatchEvent(evt);\n };\n\n return MDCComponent;\n}();\n\nexport { MDCComponent }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCComponent;","/**\n * @license\n * Copyright 2020 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/**\n * KEY provides normalized string values for keys.\n */\nexport var KEY = {\n UNKNOWN: 'Unknown',\n BACKSPACE: 'Backspace',\n ENTER: 'Enter',\n SPACEBAR: 'Spacebar',\n PAGE_UP: 'PageUp',\n PAGE_DOWN: 'PageDown',\n END: 'End',\n HOME: 'Home',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_UP: 'ArrowUp',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_DOWN: 'ArrowDown',\n DELETE: 'Delete',\n ESCAPE: 'Escape'\n};\nvar normalizedKeys = new Set(); // IE11 has no support for new Map with iterable so we need to initialize this\n// by hand.\n\nnormalizedKeys.add(KEY.BACKSPACE);\nnormalizedKeys.add(KEY.ENTER);\nnormalizedKeys.add(KEY.SPACEBAR);\nnormalizedKeys.add(KEY.PAGE_UP);\nnormalizedKeys.add(KEY.PAGE_DOWN);\nnormalizedKeys.add(KEY.END);\nnormalizedKeys.add(KEY.HOME);\nnormalizedKeys.add(KEY.ARROW_LEFT);\nnormalizedKeys.add(KEY.ARROW_UP);\nnormalizedKeys.add(KEY.ARROW_RIGHT);\nnormalizedKeys.add(KEY.ARROW_DOWN);\nnormalizedKeys.add(KEY.DELETE);\nnormalizedKeys.add(KEY.ESCAPE);\nvar KEY_CODE = {\n BACKSPACE: 8,\n ENTER: 13,\n SPACEBAR: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n DELETE: 46,\n ESCAPE: 27\n};\nvar mappedKeyCodes = new Map(); // IE11 has no support for new Map with iterable so we need to initialize this\n// by hand.\n\nmappedKeyCodes.set(KEY_CODE.BACKSPACE, KEY.BACKSPACE);\nmappedKeyCodes.set(KEY_CODE.ENTER, KEY.ENTER);\nmappedKeyCodes.set(KEY_CODE.SPACEBAR, KEY.SPACEBAR);\nmappedKeyCodes.set(KEY_CODE.PAGE_UP, KEY.PAGE_UP);\nmappedKeyCodes.set(KEY_CODE.PAGE_DOWN, KEY.PAGE_DOWN);\nmappedKeyCodes.set(KEY_CODE.END, KEY.END);\nmappedKeyCodes.set(KEY_CODE.HOME, KEY.HOME);\nmappedKeyCodes.set(KEY_CODE.ARROW_LEFT, KEY.ARROW_LEFT);\nmappedKeyCodes.set(KEY_CODE.ARROW_UP, KEY.ARROW_UP);\nmappedKeyCodes.set(KEY_CODE.ARROW_RIGHT, KEY.ARROW_RIGHT);\nmappedKeyCodes.set(KEY_CODE.ARROW_DOWN, KEY.ARROW_DOWN);\nmappedKeyCodes.set(KEY_CODE.DELETE, KEY.DELETE);\nmappedKeyCodes.set(KEY_CODE.ESCAPE, KEY.ESCAPE);\nvar navigationKeys = new Set(); // IE11 has no support for new Set with iterable so we need to initialize this\n// by hand.\n\nnavigationKeys.add(KEY.PAGE_UP);\nnavigationKeys.add(KEY.PAGE_DOWN);\nnavigationKeys.add(KEY.END);\nnavigationKeys.add(KEY.HOME);\nnavigationKeys.add(KEY.ARROW_LEFT);\nnavigationKeys.add(KEY.ARROW_UP);\nnavigationKeys.add(KEY.ARROW_RIGHT);\nnavigationKeys.add(KEY.ARROW_DOWN);\n/**\n * normalizeKey returns the normalized string for a navigational action.\n */\n\nexport function normalizeKey(evt) {\n var key = evt.key; // If the event already has a normalized key, return it\n\n if (normalizedKeys.has(key)) {\n return key;\n } // tslint:disable-next-line:deprecation\n\n\n var mappedKey = mappedKeyCodes.get(evt.keyCode);\n\n if (mappedKey) {\n return mappedKey;\n }\n\n return KEY.UNKNOWN;\n}\n/**\n * isNavigationEvent returns whether the event is a navigation event\n */\n\nexport function isNavigationEvent(evt) {\n return navigationKeys.has(normalizeKey(evt));\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/**\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\n return supportsPassiveOption(globalObj) ? {\n passive: true\n } : false;\n}\n\nfunction supportsPassiveOption(globalObj) {\n if (globalObj === void 0) {\n globalObj = window;\n } // See\n // https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n\n\n var passiveSupported = false;\n\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 };\n\n var handler = function () {};\n\n globalObj.document.addEventListener('test', handler, options);\n globalObj.document.removeEventListener('test', handler, options);\n } catch (err) {\n passiveSupported = false;\n }\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 */\nvar cssClasses = {\n ANCHOR: 'mdc-menu-surface--anchor',\n ANIMATING_CLOSED: 'mdc-menu-surface--animating-closed',\n ANIMATING_OPEN: 'mdc-menu-surface--animating-open',\n FIXED: 'mdc-menu-surface--fixed',\n IS_OPEN_BELOW: 'mdc-menu-surface--is-open-below',\n OPEN: 'mdc-menu-surface--open',\n ROOT: 'mdc-menu-surface'\n}; // tslint:disable:object-literal-sort-keys\n\nvar strings = {\n CLOSED_EVENT: 'MDCMenuSurface:closed',\n OPENED_EVENT: 'MDCMenuSurface:opened',\n FOCUSABLE_ELEMENTS: ['button:not(:disabled)', '[href]:not([aria-disabled=\"true\"])', 'input:not(:disabled)', 'select:not(:disabled)', 'textarea:not(:disabled)', '[tabindex]:not([tabindex=\"-1\"]):not([aria-disabled=\"true\"])'].join(', ')\n}; // tslint:enable:object-literal-sort-keys\n\nvar numbers = {\n /** Total duration of menu-surface open animation. */\n TRANSITION_OPEN_DURATION: 120,\n\n /** Total duration of menu-surface close animation. */\n TRANSITION_CLOSE_DURATION: 75,\n\n /** Margin left to the edge of the viewport when menu-surface is at maximum possible height. Also used as a viewport margin. */\n MARGIN_TO_EDGE: 32,\n\n /** Ratio of anchor width to menu-surface width for switching from corner positioning to center positioning. */\n ANCHOR_TO_MENU_SURFACE_WIDTH_RATIO: 0.67\n};\n/**\n * Enum for bits in the {@see Corner) bitmap.\n */\n\nvar CornerBit;\n\n(function (CornerBit) {\n CornerBit[CornerBit[\"BOTTOM\"] = 1] = \"BOTTOM\";\n CornerBit[CornerBit[\"CENTER\"] = 2] = \"CENTER\";\n CornerBit[CornerBit[\"RIGHT\"] = 4] = \"RIGHT\";\n CornerBit[CornerBit[\"FLIP_RTL\"] = 8] = \"FLIP_RTL\";\n})(CornerBit || (CornerBit = {}));\n/**\n * Enum for representing an element corner for positioning the menu-surface.\n *\n * The START constants map to LEFT if element directionality is left\n * to right and RIGHT if the directionality is right to left.\n * Likewise END maps to RIGHT or LEFT depending on the directionality.\n */\n\n\nvar Corner;\n\n(function (Corner) {\n Corner[Corner[\"TOP_LEFT\"] = 0] = \"TOP_LEFT\";\n Corner[Corner[\"TOP_RIGHT\"] = 4] = \"TOP_RIGHT\";\n Corner[Corner[\"BOTTOM_LEFT\"] = 1] = \"BOTTOM_LEFT\";\n Corner[Corner[\"BOTTOM_RIGHT\"] = 5] = \"BOTTOM_RIGHT\";\n Corner[Corner[\"TOP_START\"] = 8] = \"TOP_START\";\n Corner[Corner[\"TOP_END\"] = 12] = \"TOP_END\";\n Corner[Corner[\"BOTTOM_START\"] = 9] = \"BOTTOM_START\";\n Corner[Corner[\"BOTTOM_END\"] = 13] = \"BOTTOM_END\";\n})(Corner || (Corner = {}));\n\nexport { cssClasses, strings, numbers, CornerBit, Corner };","export generate_recaptcha_token = (callback) ->\n grecaptcha.ready ->\n grecaptcha.execute(document.body.dataset.googleSiteKey, {action: 'submit'}).then (token) ->\n document.querySelector('#recaptcha_token').value = token\n callback()\n\nexport form_params = (selector) ->\n params = params_with_csrf_token()\n form = document.querySelector(selector)\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 params\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 params.append(input.name, input.value)\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', method or 'POST')\n form.setAttribute('id', id)\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","/**\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/**\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\n var el = element;\n\n while (el) {\n if (matches(el, selector)) {\n return el;\n }\n\n el = el.parentElement;\n }\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 */\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\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\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}","export class MoneyFormat\n\n TEN_THOUSAND = 10000\n HUNDRED_THOUSAND = 100000\n ONE_MILLION = 1000000\n TEN_MILLION = 10000000\n HUNDRED_MILLION = 100000000\n\n @formatFull: (float, currency) ->\n currency or= 'GBP'\n new Intl.NumberFormat('en-US', {style: 'currency', currency: currency, minimumFractionDigits: 2, maximumFractionDigits: 2}).format(float)\n\n @format: (float, currency, digits) ->\n currency or= 'GBP'\n return @formatLargeAmount(float, currency) if Math.abs(float) >= HUNDRED_THOUSAND\n digits = if digits? then digits else 2\n digits = 0 if Math.abs(float) >= TEN_THOUSAND\n minDigits = if digits < 2 then digits else 2\n new Intl.NumberFormat('en-US', {style: 'currency', currency: currency, minimumFractionDigits: minDigits, maximumFractionDigits: digits}).format(float)\n\n @formatForInput: (float, maxDigits) ->\n return \"\" if float is null\n maxDigits or= 4\n new Intl.NumberFormat('en-US', {minimumFractionDigits: 2, maximumFractionDigits: maxDigits, useGrouping: false}).format(float)\n\n @formatLargeAmount: (float, currency) ->\n if Math.abs(float) >= HUNDRED_MILLION\n val = float / ONE_MILLION\n digits = 0\n ltr = 'm'\n else if Math.abs(float) >= TEN_MILLION\n val = float / ONE_MILLION\n digits = 1\n ltr = 'm'\n else if Math.abs(float) >= ONE_MILLION\n val = float / ONE_MILLION\n digits = 2\n ltr = 'm'\n else\n val = float / 1000.0\n ltr = 'k'\n digits = 1\n f = new Intl.NumberFormat('en-US', {style: 'currency', currency: currency, minimumFractionDigits: 0, maximumFractionDigits: digits}).format(val)\n \"#{f}#{ltr}\"\n\n @formatWithSymbol: (float, symbol) ->\n amt = @roundTo(float, 2)\n amt = if Math.round(amt) == amt then \"#{Math.round(amt)}.00\" else if Math.round(amt * 10) == amt * 10 then \"#{amt}0\" else amt\n \"#{symbol or '£'}#{amt}\"\n\n @poundAmount: (float) ->\n if float > -1 and float < 0 then \"-0\" else Math.floor(float)\n\n @pennyAmount: (float) ->\n penny = Math.abs(Math.round(float * 100) - (@poundAmount(float) * 100))\n if penny < 10 then \"0#{penny}\" else penny\n\n @formatMinor: (float, currency) ->\n num = if Math.round(float) == float then Math.round(float) else float\n \"#{num}#{@minorName(currency)}\"\n\n @minorName: (currency) ->\n return 'c' if currency is 'USD'\n return 'c' if currency is 'HKD'\n return '¢' if currency is 'EUR'\n return '¢' if currency is 'CHF'\n return 'öre' if currency is 'DKK'\n return 'öre' if currency is 'NOK'\n return 'öre' if currency is 'SEK'\n 'p'\n\n @currencySymbol: (currency) ->\n return '$' if currency is 'USD'\n return 'HK$' if currency is 'HKD'\n return '€' if currency is 'EUR'\n return 'Fr.' if currency is 'CHF'\n return 'kr.' if currency is 'DKK'\n return 'kr' if currency is 'NOK'\n return 'kr' if currency is 'SEK'\n '£'\n\n @toFloat: (string) ->\n parseFloat(@stripNonNumerics(string))\n\n @stripNonNumerics: (string) ->\n return string unless string\n string.replace(/^[a-zA-Z\\.]*/, '').replace(/[^0-9\\.]/g, \"\")\n\n @roundTo: (num, dp) ->\n mult = 10 ** dp\n Math.round(num * mult) / mult","export class CookieManager\n\n @set: (key, val) ->\n date = new Date()\n date.setTime(date.getTime() + 157680000000)\n document.cookie = \"#{key}=#{val};expires=#{date.toUTCString()};path=/\"\n\n @get: (key) ->\n name = \"#{key}=\"\n for c in decodeURIComponent(document.cookie).split(';')\n c = c.trim()\n return c.substring(name.length, c.length) if c.indexOf(name) == 0\n return null\n\n @remove: (key) ->\n val = CookieManager.get(key)\n if val\n document.cookie = \"#{key}=;expires=1970-01-01;path=/\"","/*!\n * Chart.js v3.3.2\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\nconst requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n\n return window.requestAnimationFrame;\n}();\n\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || (args => Array.prototype.slice.call(args));\n\n let ticking = false;\n let args = [];\n return function () {\n for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {\n rest[_key] = arguments[_key];\n }\n\n args = updateArgs(rest);\n\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\n\nfunction debounce(fn, delay) {\n let timeout;\n return function () {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay);\n } else {\n fn();\n }\n\n return delay;\n };\n}\n\nconst _toLeftRightCenter = align => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\nconst _textX = (align, left, right) => align === 'right' ? right : align === 'center' ? (left + right) / 2 : left;\n\nfunction noop() {}\n\nconst uid = function () {\n let id = 0;\n return function () {\n return id++;\n };\n}();\n\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n\n const type = Object.prototype.toString.call(value);\n\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n\n return false;\n}\n\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\nconst isNumberFinite = value => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nconst toPercentage = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : value / dimension;\n\nconst toDimension = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n\n if (isArray(loopable)) {\n len = loopable.length;\n\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\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\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\n\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n\n if (!isObject(source)) {\n continue;\n }\n\n const keys = Object.keys(source);\n\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n\n return target;\n}\n\nfunction mergeIf(target, source) {\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\n\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\nconst emptyString = '';\nconst dot = '.';\n\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\n\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n\n return obj;\n}\n\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nconst defined = value => typeof value !== 'undefined';\n\nconst isFunction = value => typeof value === 'function';\n\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\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;\n\nfunction niceNum(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}\n\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\n\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n\n let e = 1;\n let p = 0;\n\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n\n return p;\n}\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\n if (angle < -0.5 * PI) {\n angle += TAU;\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n\n const s = _normalizeAngle(start);\n\n const e = _normalizeAngle(end);\n\n const angleToStart = _normalizeAngle(s - a);\n\n const angleToEnd = _normalizeAngle(e - a);\n\n const startToAngle = _normalizeAngle(a - s);\n\n const endToAngle = _normalizeAngle(a - e);\n\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n\nconst atEdge = t => t === 0 || t === 1;\n\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\n\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\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\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\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t) {\n let s = 1.70158;\n\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n\n if (t < 1 / d) {\n return m * t * t;\n }\n\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n\n easeInOutBounce: t => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\n\nconst map = {\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';\n\nconst h1 = b => hex[b & 0xF];\n\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\n\nconst eq = b => (b & 0xF0) >> 4 === (b & 0xF);\n\nfunction isShort(v) {\n return eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\n\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map[str[1]] * 17,\n g: 255 & map[str[2]] * 17,\n b: 255 & map[str[3]] * 17,\n a: len === 5 ? map[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map[str[1]] << 4 | map[str[2]],\n g: map[str[3]] << 4 | map[str[4]],\n b: map[str[5]] << 4 | map[str[6]],\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255\n };\n }\n }\n\n return ret;\n}\n\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v ? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '') : v;\n}\n\nfunction round(v) {\n return v + 0.5 | 0;\n}\n\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\n\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\n\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\n\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\n\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n\n if (!m) {\n return;\n }\n\n if (m[7] !== r) {\n const v = +m[7];\n a = 255 & (m[8] ? p2b(v) : v * 255);\n }\n\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : r);\n g = 255 & (m[4] ? p2b(g) : g);\n b = 255 & (m[6] ? p2b(b) : b);\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\n\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n\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\n return [f(0), f(8), f(4)];\n}\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\n return [f(5), f(3), f(1)];\n}\n\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n\n return rgb;\n}\n\nfunction 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\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h = h * 60 + 0.5;\n }\n\n return [h | 0, s || 0, l];\n}\n\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\n\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\n\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\n\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\n\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\n\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n\n if (!m) {\n return;\n }\n\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\n\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\n\nfunction hslString(v) {\n if (!v) {\n return;\n }\n\n 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}\n\nconst map$1 = {\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 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\n\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map$1);\n let i, j, k, ok, nk;\n\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map$1[k]);\n }\n\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n\n return unpacked;\n}\n\nlet names$1;\n\nfunction nameParse(str) {\n if (!names$1) {\n names$1 = unpack();\n names$1.transparent = [0, 0, 0, 0];\n }\n\n const a = names$1[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\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}\n\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\n\nfunction fromObject(input) {\n var v = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {\n r: input[0],\n g: input[1],\n b: input[2],\n a: 255\n };\n\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {\n r: 0,\n g: 0,\n b: 0,\n a: 1\n });\n v.a = n2b(v.a);\n }\n\n return v;\n}\n\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n\n return hueParse(str);\n}\n\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n\n const type = typeof input;\n let v;\n\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n\n this._rgb = v;\n this._valid = !!v;\n }\n\n get valid() {\n return this._valid;\n }\n\n get rgb() {\n var v = clone(this._rgb);\n\n if (v) {\n v.a = b2n(v.a);\n }\n\n return v;\n }\n\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n\n rgbString() {\n return this._valid ? rgbString(this._rgb) : this._rgb;\n }\n\n hexString() {\n return this._valid ? hexString(this._rgb) : this._rgb;\n }\n\n hslString() {\n return this._valid ? hslString(this._rgb) : this._rgb;\n }\n\n mix(color, weight) {\n const me = this;\n\n if (color) {\n const c1 = me.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 me.rgb = c1;\n }\n\n return me;\n }\n\n clone() {\n return new Color(this.rgb);\n }\n\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\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\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\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\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nconst isPatternOrGradient = value => value instanceof CanvasGradient || value instanceof CanvasPattern;\n\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\n\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\n\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n\n const keys = key.split('.');\n\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\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n\n return merge(getScope$1(root, ''), scope);\n}\n\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\n this.devicePixelRatio = context => context.chart.platform.getDevicePixelRatio();\n\n this.elements = {};\n this.events = ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\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.describe(_descriptors);\n }\n\n set(scope, values) {\n return set(this, scope, values);\n }\n\n get(scope) {\n return getScope$1(this, scope);\n }\n\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\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\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n\n return valueOrDefault(local, target);\n },\n\n set(value) {\n this[privateName] = value;\n }\n\n }\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});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n\n if (textWidth > longest) {\n longest = textWidth;\n }\n\n return longest;\n}\n\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\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\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n const gcLen = gc.length / 2;\n\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n\n gc.splice(0, gcLen);\n }\n\n return longest;\n}\n\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}\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}\n\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n\n rad += QUARTER_PI;\n\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n\n case 'crossRot':\n rad += QUARTER_PI;\n\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\n\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n if (mode === 'middle') {\n 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\n ctx.lineTo(target.x, target.y);\n}\n\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\n\nfunction 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\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n ctx.font = font.string;\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n\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\n y += font.lineHeight;\n }\n\n ctx.restore();\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}\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)?))$/);\n\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n\n case '%':\n value /= 100;\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = v => +v || 0;\n\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\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n\n return ret;\n}\n\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\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}\n\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n\n let style = valueOrDefault(options.style, fallback.style);\n\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\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}\n\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n\n if (value === undefined) {\n continue;\n }\n\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n\n return value;\n }\n }\n}\n\nfunction _addGrace(minmax, grace) {\n const min = minmax.min,\n max = minmax.max;\n return {\n min: min - Math.abs(toDimension(grace, min)),\n max: max + toDimension(grace, max)\n };\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || (index => table[index] < value);\n\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {\n lo,\n hi\n };\n}\n\nconst _lookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] < value);\n\nconst _rlookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] >= value);\n\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(key => {\n const method = '_onData' + _capitalize(key);\n\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n\n value() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach(object => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n\n });\n });\n}\n\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach(key => {\n delete array[key];\n });\n delete array._chartjs;\n}\n\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n\n if (set.size === ilen) {\n return items;\n }\n\n const result = [];\n set.forEach(item => {\n result.push(item);\n });\n return result;\n}\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\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\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\n get(target, prop) {\n return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n storage[prop] = value;\n delete target[prop];\n delete target._keys;\n return true;\n }\n\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\n get(target, prop, receiver) {\n return _cached(target, prop, () => _resolveWithContext(target, prop, receiver));\n },\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\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n\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\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\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}\n\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\n\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters';\n\nfunction _cached(target, prop, resolve) {\n let value = target[prop];\n\n if (defined(value)) {\n return value;\n }\n\n value = resolve();\n\n if (defined(value)) {\n target[prop] = value;\n }\n\n return value;\n}\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\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n\n return value;\n}\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\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + [..._stack].join('->') + '->' + prop);\n }\n\n _stack.add(prop);\n\n value = value(_context, _subProxy || receiver);\n\n _stack.delete(prop);\n\n if (isObject(value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n\n return value;\n}\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\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\n const scopes = _proxy._scopes.filter(s => s !== arr);\n\n value = [];\n\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\n return value;\n}\n\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key, parent) => key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(set, parentScopes, key, parentFallback) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, scope);\n\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\n return false;\n}\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);\n\n if (key === null) {\n return false;\n }\n\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key);\n\n if (key === null) {\n return false;\n }\n }\n\n return _createResolver([...set], [''], rootScopes, fallback, () => subGetTarget(resolver, prop, value));\n}\n\nfunction addScopesFromKey(set, allScopes, key, fallback) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback);\n }\n\n return key;\n}\n\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n\n const target = parent[prop];\n\n if (isArray(target) && isObject(value)) {\n return value;\n }\n\n return target;\n}\n\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n\n if (defined(value)) {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\n\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n\n const value = scope[key];\n\n if (defined(value)) {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n\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\n return [...set];\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\n\nconst getValueAxis = indexAxis => indexAxis === 'x' ? 'y' : 'x';\n\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}\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\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points, mK) {\n 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\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n\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\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}\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\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n\n let inAreaNext = _isPointInArea(points[0], area);\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n\n if (!inArea) {\n continue;\n }\n\n point = points[i];\n\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n\n if (options.spanGaps) {\n points = points.filter(pt => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n\n return parent;\n}\n\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = element => window.getComputedStyle(element, null);\n\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\n\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\n\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\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\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\n return {\n x,\n y,\n box\n };\n}\n\nfunction getRelativePosition(evt, chart) {\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\n const _getCanvasPosition = getCanvasPosition(evt, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\n\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\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n\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\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = v => Math.round(v * 10) / 10;\n\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\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\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\n if (width && !height) {\n height = round1(width / 2);\n }\n\n return {\n width,\n height\n };\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\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\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n\n return false;\n}\n\nconst supportsEventListenerOptions = function () {\n let passiveSupported = false;\n\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {}\n\n return passiveSupported;\n}();\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}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n\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\n const a = _pointInLine(p1, cp1, t);\n\n const b = _pointInLine(cp1, cp2, t);\n\n const c = _pointInLine(cp2, p2, t);\n\n const d = _pointInLine(a, b, t);\n\n const e = _pointInLine(b, c, t);\n\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n\n return formatter;\n}\n\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function (rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n\n setWidth(w) {\n width = w;\n },\n\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n\n return align === 'right' ? 'left' : 'right';\n },\n\n xPlus(x, value) {\n return x - value;\n },\n\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n\n };\n};\n\nconst getLeftToRightAdapter = function () {\n return {\n x(x) {\n return x;\n },\n\n setWidth(w) {},\n\n textAlign(align) {\n return align;\n },\n\n xPlus(x, value) {\n return x + value;\n },\n\n leftForLtr(x, _itemWidth) {\n return x;\n }\n\n };\n};\n\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\n\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n\n return {\n between: (n, s, e) => n >= Math.min(s, e) && n <= Math.max(e, s),\n compare: (a, b) => a - b,\n normalize: x => x\n };\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}\n\nfunction getSegment(segment, points, bounds) {\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n\n const _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n\n const count = points.length;\n let start = segment.start,\n end = segment.end,\n loop = segment.loop;\n let i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n\n start--;\n end--;\n }\n\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\n\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n const property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n const count = points.length;\n\n const _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n\n const _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n\n const shouldStart = () => inside || startIsBefore();\n\n const shouldStop = () => !inside || endIsBefore();\n\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n\n return result;\n}\n\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n\n if (sub.length) {\n result.push(...sub);\n }\n }\n\n return result;\n}\n\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n while (start < count && points[start].skip) {\n start++;\n }\n\n start %= count;\n\n if (loop) {\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n end %= count;\n return {\n start,\n end\n };\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\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n\n if (prev.skip) {\n start = end;\n }\n }\n\n prev = cur;\n }\n\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n\n return result;\n}\n\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n\n if (!count) {\n return [];\n }\n\n const loop = !!line._loop;\n\n const _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n\n if (spanGaps === true) {\n return splitByStyles([{\n start,\n end,\n loop\n }], points, segmentOptions);\n }\n\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\nfunction splitByStyles(segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n\n return doSplitByStyles(segments, points, segmentOptions);\n}\n\nfunction doSplitByStyles(segments, points, segmentOptions) {\n const count = points.length;\n const result = [];\n let start = segments[0].start;\n let i = start;\n\n for (const segment of segments) {\n let prevStyle, style;\n let prev = points[start % count];\n\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext({\n type: 'segment',\n p0: prev,\n p1: pt\n }));\n\n if (styleChanged(style, prevStyle)) {\n result.push({\n start: start,\n end: i - 1,\n loop: segment.loop,\n style: prevStyle\n });\n prevStyle = style;\n start = i - 1;\n }\n\n prev = pt;\n prevStyle = style;\n }\n\n if (start < i - 1) {\n result.push({\n start,\n end: i - 1,\n loop: segment.loop,\n style\n });\n start = i - 1;\n }\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { merge as $, _isPointInArea as A, _rlookupByKey as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, log10 as K, _factorize as L, finiteOrDefault as M, callback as N, _addGrace as O, PI as P, toDegrees as Q, _measureText as R, _int16Range as S, TAU as T, _alignPixel as U, renderText as V, toFont as W, _toLeftRightCenter as X, _alignStartEnd as Y, overrides as Z, _arrayUnique as _, resolve as a, _capitalize as a0, descriptors as a1, isFunction as a2, _attachContext as a3, _createResolver as a4, _descriptors as a5, mergeIf as a6, uid as a7, debounce as a8, retinaScale as a9, niceNum as aA, almostWhole as aB, almostEquals as aC, _decimalPlaces as aD, _longestText as aE, _filterBetween as aF, _lookup as aG, getHoverColor as aH, clone$1 as aI, _merger as aJ, _mergerIf as aK, _deprecated as aL, toFontString as aM, splineCurve as aN, splineCurveMonotone as aO, getStyle as aP, fontString as aQ, toLineHeight as aR, PITAU as aS, INFINITY as aT, RAD_PER_DEG as aU, QUARTER_PI as aV, TWO_THIRDS_PI as aW, _angleDiff as aX, clearCanvas as aa, setsEqual as ab, _elementsEqual as ac, getAngleFromPoint as ad, _readValueToProps as ae, _updateBezierControlPoints as af, _computeSegments as ag, _boundSegments as ah, _steppedInterpolation as ai, _bezierInterpolation as aj, _pointInLine as ak, _steppedLineTo as al, _bezierCurveTo as am, drawPoint as an, addRoundedRectPath as ao, toTRBL as ap, toTRBLCorners as aq, _boundSegment as ar, _normalizeAngle as as, getRtlAdapter as at, overrideTextDirection as au, _textX as av, restoreTextDirection as aw, noop as ax, distanceBetweenPoints as ay, _setMinAndMaxByKey as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, isNullOrUndef as j, clipArea as k, listenArrayEvents as l, unclipArea as m, toPercentage as n, toDimension as o, formatNumber as p, _angleBetween as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, isNumber as w, _limitValue as x, _lookupByKey as y, getRelativePosition as z };","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n/*!\n * Chart.js v3.3.2\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, b as isArray, d as defaults, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as isNullOrUndef, k as clipArea, m as unclipArea, _ as _arrayUnique, t as toRadians, n as toPercentage, o as toDimension, T as TAU, p as formatNumber, q as _angleBetween, H as HALF_PI, P as PI, w as isNumber, x as _limitValue, y as _lookupByKey, z as getRelativePosition$1, A as _isPointInArea, B as _rlookupByKey, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as log10, L as _factorize, M as finiteOrDefault, N as callback, O as _addGrace, Q as toDegrees, R as _measureText, S as _int16Range, U as _alignPixel, V as renderText, W as toFont, X as _toLeftRightCenter, Y as _alignStartEnd, Z as overrides, $ as merge, a0 as _capitalize, a1 as descriptors, a2 as isFunction, a3 as _attachContext, a4 as _createResolver, a5 as _descriptors, a6 as mergeIf, a7 as uid, a8 as debounce, a9 as retinaScale, aa as clearCanvas, ab as setsEqual, ac as _elementsEqual, ad as getAngleFromPoint, ae as _readValueToProps, af as _updateBezierControlPoints, ag as _computeSegments, ah as _boundSegments, ai as _steppedInterpolation, aj as _bezierInterpolation, ak as _pointInLine, al as _steppedLineTo, am as _bezierCurveTo, an as drawPoint, ao as addRoundedRectPath, ap as toTRBL, aq as toTRBLCorners, ar as _boundSegment, as as _normalizeAngle, at as getRtlAdapter, au as overrideTextDirection, av as _textX, aw as restoreTextDirection, ax as noop, ay as distanceBetweenPoints, az as _setMinAndMaxByKey, aA as niceNum, aB as almostWhole, aC as almostEquals, aD as _decimalPlaces, aE as _longestText, aF as _filterBetween, aG as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\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\n _refresh() {\n const me = this;\n\n if (me._request) {\n return;\n }\n\n me._running = true;\n me._request = requestAnimFrame.call(window, () => {\n me._update();\n\n me._request = null;\n\n if (me._running) {\n me._refresh();\n }\n });\n }\n\n _update() {\n let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Date.now();\n const me = this;\n let remaining = 0;\n\n me._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n\n me._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n\n me._notify(chart, anims, date, 'complete');\n\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n me._lastDate = date;\n\n if (remaining === 0) {\n me._running = false;\n }\n }\n\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n\n return anims;\n }\n\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n\n this._getAnims(chart).items.push(...items);\n }\n\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n start(chart) {\n const anims = this._charts.get(chart);\n\n if (!anims) {\n return;\n }\n\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n\n const anims = this._charts.get(chart);\n\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n\n return true;\n }\n\n stop(chart) {\n const anims = this._charts.get(chart);\n\n if (!anims || !anims.items.length) {\n return;\n }\n\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n\n anims.items = [];\n\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n remove(chart) {\n return this._charts.delete(chart);\n }\n\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\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\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n\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\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n const me = this;\n\n if (me._active) {\n me._notify(false);\n\n const currentValue = me._target[me._prop];\n const elapsed = date - me._start;\n const remain = me._duration - elapsed;\n me._start = date;\n me._duration = Math.floor(Math.max(remain, cfg.duration));\n me._total += elapsed;\n me._loop = !!cfg.loop;\n me._to = resolve([cfg.to, to, currentValue, cfg.from]);\n me._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n const me = this;\n\n if (me._active) {\n me.tick(Date.now());\n me._active = false;\n\n me._notify(false);\n }\n }\n\n tick(date) {\n const me = this;\n const elapsed = date - me._start;\n const duration = me._duration;\n const prop = me._prop;\n const from = me._from;\n const loop = me._loop;\n const to = me._to;\n let factor;\n me._active = from !== to && (loop || elapsed < duration);\n\n if (!me._active) {\n me._target[prop] = to;\n\n me._notify(true);\n\n return;\n }\n\n if (elapsed < 0) {\n me._target[prop] = from;\n return;\n }\n\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = me._easing(Math.min(1, Math.max(0, factor)));\n me._target[prop] = me._fn(from, to, factor);\n }\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\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\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});\n\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n\n if (!isObject(cfg)) {\n return;\n }\n\n const resolved = {};\n\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\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\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {});\n }\n\n return animations;\n }\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\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n\n return animations;\n }\n\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n\n let options = target.options;\n\n if (!options) {\n target.options = newOptions;\n return;\n }\n\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n 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}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\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}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n\n break;\n }\n\n otherValue = stack.values[datasetIndex];\n\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n\n return value;\n}\n\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\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\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive) {\n for (const meta of vScale.getMatchingVisibleMetas('bar').reverse()) {\n const value = stack[meta.index];\n\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n\n return null;\n}\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\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);\n stack._bottom = getLastIndexInStack(stack, vScale, false);\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return Object.assign(Object.create(parent), {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\n\nfunction createDataContext(parent, index, element) {\n return Object.assign(Object.create(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}\n\nfunction clearStacks(meta, items) {\n const axis = meta.vScale && meta.vScale.axis;\n\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n\n for (const parsed of items) {\n const stacks = parsed._stacks;\n\n if (!stacks || stacks[axis] === undefined || stacks[axis][meta.index] === undefined) {\n return;\n }\n\n delete stacks[axis][meta.index];\n }\n}\n\nconst isDirectUpdateMode = mode => mode === 'reset' || mode === 'none';\n\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\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.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n\n initialize() {\n const me = this;\n const meta = me._cachedMeta;\n me.configure();\n me.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n me.addElements();\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n\n this.index = datasetIndex;\n }\n\n linkScales() {\n const me = this;\n const chart = me.chart;\n const meta = me._cachedMeta;\n const dataset = me.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\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 = me.getScaleForId(xid);\n meta.yScale = me.getScaleForId(yid);\n meta.rScale = me.getScaleForId(rid);\n meta.iScale = me.getScaleForId(iid);\n meta.vScale = me.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n _destroy() {\n const meta = this._cachedMeta;\n\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n _dataCheck() {\n const me = this;\n const dataset = me.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = me._data;\n\n if (isObject(data)) {\n me._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, me);\n const meta = me._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, me);\n }\n\n me._syncList = [];\n me._data = data;\n }\n }\n\n addElements() {\n const me = this;\n const meta = me._cachedMeta;\n\n me._dataCheck();\n\n if (me.datasetElementType) {\n meta.dataset = new me.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const me = this;\n const meta = me._cachedMeta;\n const dataset = me.getDataset();\n let stackChanged = false;\n\n me._dataCheck();\n\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n me._resyncElements(resetNewElements);\n\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(me, meta._parsed);\n }\n }\n\n configure() {\n const me = this;\n const config = me.chart.config;\n const scopeKeys = config.datasetScopeKeys(me._type);\n const scopes = config.getOptionScopes(me.getDataset(), scopeKeys, true);\n me.options = config.createResolver(scopes, me.getContext());\n me._parsing = me.options.parsing;\n }\n\n parse(start, count) {\n const me = this;\n const meta = me._cachedMeta,\n data = me._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\n if (me._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = me.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = me.parseObjectData(meta, data, start, count);\n } else {\n parsed = me.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n\n prev = cur;\n }\n }\n\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(me, parsed);\n }\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\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\n return parsed;\n }\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\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n\n return parsed;\n }\n\n 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\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n\n return parsed;\n }\n\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\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\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\n if (stack && values) {\n stack.values = values;\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n value = applyStack(stack, parsedValue, this._cachedMeta.index, {\n all: true\n });\n }\n\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n getMinMax(scale, canStack) {\n const me = this;\n const meta = me._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n\n const otherScale = me._getOtherScale(scale);\n\n const stack = canStack && meta._stacked && {\n keys: getSortedDatasetIndices(me.chart, true),\n values: null\n };\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n\n const _getUserBounds = getUserBounds(otherScale),\n otherMin = _getUserBounds.min,\n otherMax = _getUserBounds.max;\n\n let i, value, parsed, otherValue;\n\n function _skip() {\n parsed = _parsed[i];\n value = parsed[scale.axis];\n otherValue = parsed[otherScale.axis];\n return !isNumberFinite(value) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n\n me.updateRangeFromParsed(range, scale, parsed, stack);\n\n if (sorted) {\n break;\n }\n }\n\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n\n me.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n\n return values;\n }\n\n getMaxOverflow() {\n return false;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = me.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n _update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n me.configure();\n me._cachedDataOpts = {};\n me.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(me.options.clip, defaultClip(meta.xScale, meta.yScale, me.getMaxOverflow())));\n }\n\n update(mode) {}\n\n draw() {\n const me = this;\n const ctx = me._ctx;\n const chart = me.chart;\n const meta = me._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = me._drawStart || 0;\n const count = me._drawCount || elements.length - start;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n\n if (element.active) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n 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\n getContext(index, active, mode) {\n const me = this;\n const dataset = me.getDataset();\n let context;\n\n if (index >= 0 && index < me._cachedMeta.data.length) {\n const element = me._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(me.getContext(), index, element));\n context.parsed = me.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = me.$context || (me.$context = createDatasetContext(me.chart.getContext(), me.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = me.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\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 me = this;\n const active = mode === 'active';\n const cache = me._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = me.enableOptionSharing && defined(index);\n\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n\n const config = me.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(me._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(me.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n\n const context = () => me.getContext(index, active);\n\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n _resolveAnimations(index, transition, active) {\n const me = this;\n const chart = me.chart;\n const cache = me._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n\n if (cached) {\n return cached;\n }\n\n let options;\n\n if (chart.options.animation !== false) {\n const config = me.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(me._type, transition);\n const scopes = config.getOptionScopes(me.getDataset(), scopeKeys);\n options = config.createResolver(scopes, me.getContext(index, active, transition));\n }\n\n const animations = new Animations(chart, options && options.animations);\n\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n\n return animations;\n }\n\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\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\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n _resyncElements(resetNewElements) {\n const me = this;\n const data = me._data;\n const elements = me._cachedMeta.data;\n\n for (const _ref of me._syncList) {\n var _ref2 = _slicedToArray(_ref, 3);\n\n const method = _ref2[0];\n const arg1 = _ref2[1];\n const arg2 = _ref2[2];\n me[method](arg1, arg2);\n }\n\n me._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n me.parse(0, count);\n }\n\n if (numData > numMeta) {\n me._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n me._removeElements(numData, numMeta - numData);\n }\n }\n\n _insertElements(start, count) {\n let resetNewElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n const me = this;\n const meta = me._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = arr => {\n arr.length += count;\n\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new me.dataElementType();\n }\n\n if (me._parsing) {\n move(meta._parsed);\n }\n\n me.parse(start, count);\n\n if (resetNewElements) {\n me.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {}\n\n _removeElements(start, count) {\n const me = this;\n const meta = me._cachedMeta;\n\n if (me._parsing) {\n const removed = meta._parsed.splice(start, count);\n\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n\n meta.data.splice(start, count);\n }\n\n _onDataPush() {\n const count = arguments.length;\n\n this._syncList.push(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._syncList.push(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._syncList.push(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n this._syncList.push(['_removeElements', start, count]);\n\n this._syncList.push(['_insertElements', start, arguments.length - 2]);\n }\n\n _onDataUnshift() {\n this._syncList.push(['_insertElements', 0, arguments.length]);\n }\n\n}\n\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale) {\n if (!scale._cache.$bar) {\n const metas = scale.getMatchingVisibleMetas('bar');\n let values = [];\n\n for (let i = 0, ilen = metas.length; i < ilen; i++) {\n values = values.concat(metas[i].controller.getAllParsedValues(scale));\n }\n\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n\n return scale._cache.$bar;\n}\n\nfunction computeMinSampleSize(scale) {\n const values = getAllScaleValues(scale);\n let min = scale._length;\n let i, ilen, curr, prev;\n\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\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\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n next = curr + curr - prev;\n }\n\n 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}\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\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n 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\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\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\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n\n return parsed;\n }\n\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const iScale = meta.iScale,\n vScale = meta.vScale;\n const parsed = me.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\n initialize() {\n const me = this;\n me.enableOptionSharing = true;\n super.initialize();\n const meta = me._cachedMeta;\n meta.stack = me.getDataset().stack;\n }\n\n update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n me.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const vScale = me._cachedMeta.vScale;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n\n const ruler = me._getRuler();\n\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n\n for (let i = start; i < start + count; i++) {\n const parsed = me.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : me._calculateBarValuePixels(i);\n\n const ipixels = me._calculateBarIndexPixels(i, ruler);\n\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || me.index === stack._top || me.index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : undefined,\n width: horizontal ? undefined : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || me.resolveDataElementOptions(i, mode);\n }\n\n me.updateElement(bars[i], i, properties, mode);\n }\n }\n\n _getStacks(last, dataIndex) {\n const me = this;\n const meta = me._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(me._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[item.controller._cachedMeta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n\n if (stacked === false || stacks.indexOf(item.stack) === -1 || stacked === undefined && item.stack === undefined) {\n stacks.push(item.stack);\n }\n\n if (item.index === last) {\n break;\n }\n }\n\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n\n _getRuler() {\n const me = this;\n const opts = me.options;\n const meta = me._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(me.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(iScale);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: me._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n _calculateBarValuePixels(index) {\n const me = this;\n const _me$_cachedMeta = me._cachedMeta,\n vScale = _me$_cachedMeta.vScale,\n _stacked = _me$_cachedMeta._stacked;\n const _me$options = me.options,\n baseValue = _me$options.base,\n minBarLength = _me$options.minBarLength;\n const parsed = me.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 ? me.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n\n size = head - base;\n\n if (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n size = size < 0 ? -minBarLength : minBarLength;\n\n if (value === 0) {\n base -= size / 2;\n }\n\n head = base + size;\n }\n\n const actualBase = baseValue || 0;\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = vScale.getLineWidthForValue(actualBase) / 2;\n\n if (size > 0) {\n base += halfGrid;\n size -= halfGrid;\n } else if (size < 0) {\n base -= halfGrid;\n size += halfGrid;\n }\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n _calculateBarIndexPixels(index, ruler) {\n const me = this;\n const scale = ruler.scale;\n const options = me.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n\n if (ruler.grouped) {\n const stackCount = skipNull ? me._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n const stackIndex = me._getStackIndex(me.index, me._cachedMeta.stack, skipNull ? index : undefined);\n\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(me.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const me = this;\n const chart = me.chart;\n const meta = me._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n clipArea(chart.ctx, chart.chartArea);\n\n for (; i < ilen; ++i) {\n if (me.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(me._ctx);\n }\n }\n\n unclipArea(chart.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 interaction: {\n mode: 'index'\n },\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n parseObjectData(meta, data, start, count) {\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const _this$_parsing3 = this._parsing,\n _this$_parsing3$xAxis = _this$_parsing3.xAxisKey,\n xAxisKey = _this$_parsing3$xAxis === void 0 ? 'x' : _this$_parsing3$xAxis,\n _this$_parsing3$yAxis = _this$_parsing3.yAxisKey,\n yAxisKey = _this$_parsing3$yAxis === void 0 ? 'y' : _this$_parsing3$yAxis;\n const parsed = [];\n let i, ilen, item;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n item = data[i];\n parsed.push({\n x: xScale.parse(resolveObjectKey(item, xAxisKey), i),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), i),\n _custom: item && item.r && +item.r\n });\n }\n\n return parsed;\n }\n\n getMaxOverflow() {\n const _this$_cachedMeta = this._cachedMeta,\n data = _this$_cachedMeta.data,\n _parsed = _this$_cachedMeta._parsed;\n let max = 0;\n\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size() / 2, _parsed[i]._custom);\n }\n\n return max > 0 && max;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const xScale = meta.xScale,\n yScale = meta.yScale;\n const parsed = me.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\n update(mode) {\n const me = this;\n const points = me._cachedMeta.data;\n me.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const _me$_cachedMeta2 = me._cachedMeta,\n iScale = _me$_cachedMeta2.iScale,\n vScale = _me$_cachedMeta2.vScale;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && me.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\n if (includeOptions) {\n properties.options = me.resolveDataElementOptions(i, mode);\n\n if (reset) {\n properties.options.radius = 0;\n }\n }\n\n me.updateElement(point, i, properties, mode);\n }\n\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n\n const radius = values.radius;\n\n if (mode !== 'active') {\n values.radius = 0;\n }\n\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n\n}\n\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 }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n\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\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n\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\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\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\n linkScales() {}\n\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n let i, ilen;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = +data[i];\n }\n }\n\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n const me = this;\n\n for (let i = 0; i < me.chart.data.datasets.length; ++i) {\n if (me.chart.isDatasetVisible(i)) {\n const controller = me.chart.getDatasetMeta(i).controller;\n\n const rotation = controller._getRotation();\n\n const circumference = controller._getCircumference();\n\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n\n return {\n rotation: min,\n circumference: max - min\n };\n }\n\n update(mode) {\n const me = this;\n const chart = me.chart;\n const chartArea = chart.chartArea;\n const meta = me._cachedMeta;\n const arcs = meta.data;\n const spacing = me.getMaxBorderWidth() + me.getMaxOffset(arcs);\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(me.options.cutout, maxSize), 1);\n\n const chartWeight = me._getRingWeight(me.index);\n\n const _me$_getRotationExten = me._getRotationExtents(),\n circumference = _me$_getRotationExten.circumference,\n rotation = _me$_getRotationExten.rotation;\n\n const _getRatioAndOffset = getRatioAndOffset(rotation, circumference, cutout),\n ratioX = _getRatioAndOffset.ratioX,\n ratioY = _getRatioAndOffset.ratioY,\n offsetX = _getRatioAndOffset.offsetX,\n offsetY = _getRatioAndOffset.offsetY;\n\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(me.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n\n const radiusLength = (outerRadius - innerRadius) / me._getVisibleDatasetWeightTotal();\n\n me.offsetX = offsetX * outerRadius;\n me.offsetY = offsetY * outerRadius;\n meta.total = me.calculateTotal();\n me.outerRadius = outerRadius - radiusLength * me._getRingWeightOffset(me.index);\n me.innerRadius = Math.max(me.outerRadius - radiusLength * chartWeight, 0);\n me.updateElements(arcs, 0, arcs.length, mode);\n }\n\n _circumference(i, reset) {\n const me = this;\n const opts = me.options;\n const meta = me._cachedMeta;\n\n const circumference = me._getCircumference();\n\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null) {\n return 0;\n }\n\n return me.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n\n updateElements(arcs, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const chart = me.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 : me.innerRadius;\n const outerRadius = animateScale ? 0 : me.outerRadius;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n\n let startAngle = me._getRotation();\n\n let i;\n\n for (i = 0; i < start; ++i) {\n startAngle += me._circumference(i, reset);\n }\n\n for (i = start; i < start + count; ++i) {\n const circumference = me._circumference(i, reset);\n\n const arc = arcs[i];\n const properties = {\n x: centerX + me.offsetX,\n y: centerY + me.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || me.resolveDataElementOptions(i, mode);\n }\n\n startAngle += circumference;\n me.updateElement(arc, i, properties, mode);\n }\n\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i)) {\n total += Math.abs(value);\n }\n }\n\n return total;\n }\n\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n\n return 0;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const chart = me.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\n getMaxBorderWidth(arcs) {\n const me = this;\n let max = 0;\n const chart = me.chart;\n let i, ilen, meta, controller, options;\n\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n\n if (controller !== me) {\n controller.configure();\n }\n\n break;\n }\n }\n }\n\n if (!arcs) {\n return 0;\n }\n\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n\n return max;\n }\n\n getMaxOffset(arcs) {\n let max = 0;\n\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\n return max;\n }\n\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n\n return ringWeightOffset;\n }\n\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n\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']\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n indexAxis: 'r'\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n\n if (data.labels.length && data.datasets.length) {\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 hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n\n return [];\n }\n\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n\n return dataLabel;\n }\n\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n\n update(mode) {\n const me = this;\n const meta = me._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 = me.chart._animationsDisabled;\n\n let _getStartAndCountOfVi = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled),\n start = _getStartAndCountOfVi.start,\n count = _getStartAndCountOfVi.count;\n\n me._drawStart = start;\n me._drawCount = count;\n\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = me.resolveDatasetElementOptions(mode);\n\n if (!me.options.showLine) {\n options.borderWidth = 0;\n }\n\n options.segment = me.options.segment;\n me.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n me.updateElements(points, start, count, mode);\n }\n\n updateElements(points, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const _me$_cachedMeta3 = me._cachedMeta,\n iScale = _me$_cachedMeta3.iScale,\n vScale = _me$_cachedMeta3.vScale,\n _stacked = _me$_cachedMeta3._stacked;\n const firstOpts = me.resolveDataElementOptions(start, mode);\n const sharedOptions = me.getSharedOptions(firstOpts);\n const includeOptions = me.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const spanGaps = me.options.spanGaps;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = me.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && me.getParsed(start - 1);\n\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = me.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 ? me.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && parsed[iAxis] - prevParsed[iAxis] > maxGapLength;\n properties.parsed = parsed;\n\n if (includeOptions) {\n properties.options = sharedOptions || me.resolveDataElementOptions(i, mode);\n }\n\n if (!directUpdate) {\n me.updateElement(point, i, properties, mode);\n }\n\n prevParsed = parsed;\n }\n\n me.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n\n getMaxOverflow() {\n const me = this;\n const meta = me._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n\n if (!data.length) {\n return border;\n }\n\n const firstPoint = data[0].size(me.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(me.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n\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};\n\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const iScale = meta.iScale,\n _parsed = meta._parsed;\n const axis = iScale.axis;\n\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\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\n if (maxDefined) {\n count = _limitValue(Math.max(_lookupByKey(_parsed, iScale.axis, max).hi + 1, animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {\n start,\n count\n };\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\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\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}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n\n getLabelAndValue(index) {\n const me = this;\n const meta = me._cachedMeta;\n const chart = me.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\n update(mode) {\n const arcs = this._cachedMeta.data;\n\n this._updateRadius();\n\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n\n _updateRadius() {\n const me = this;\n const chart = me.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 me.outerRadius = outerRadius - radiusLength * me.index;\n me.innerRadius = me.outerRadius - radiusLength;\n }\n\n updateElements(arcs, start, count, mode) {\n const me = this;\n const reset = mode === 'reset';\n const chart = me.chart;\n const dataset = me.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = me._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 / me.countVisibleElements();\n\n for (i = 0; i < start; ++i) {\n angle += me._computeAngle(i, mode, defaultAngle);\n }\n\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n\n let endAngle = angle + me._computeAngle(i, mode, defaultAngle);\n\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: me.resolveDataElementOptions(i, mode)\n };\n me.updateElement(arc, i, properties, mode);\n }\n }\n\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n\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\n if (data.labels.length && data.datasets.length) {\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 hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n\n return [];\n }\n\n },\n\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\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};\n\nclass PieController extends DoughnutController {}\n\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const me = this;\n const vScale = me._cachedMeta.vScale;\n const parsed = me.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n\n update(mode) {\n const me = this;\n const meta = me._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n\n if (mode !== 'resize') {\n const options = me.resolveDatasetElementOptions(mode);\n\n if (!me.options.showLine) {\n options.borderWidth = 0;\n }\n\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n me.updateElement(line, undefined, properties, mode);\n }\n\n me.updateElements(points, 0, points.length, mode);\n }\n\n updateElements(points, start, count, mode) {\n const me = this;\n const dataset = me.getDataset();\n const scale = me._cachedMeta.rScale;\n const reset = mode === 'reset';\n\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = me.resolveDataElementOptions(i, mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\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 me.updateElement(point, i, properties, mode);\n }\n }\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};\n\nclass ScatterController extends LineController {}\n\nScatterController.id = 'scatter';\nScatterController.defaults = {\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\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\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});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n\n formats() {\n return abstract();\n }\n\n parse(value, format) {\n return abstract();\n }\n\n format(timestamp, format) {\n return abstract();\n }\n\n add(timestamp, amount, unit) {\n return abstract();\n }\n\n diff(a, b, unit) {\n return abstract();\n }\n\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n\n endOf(timestamp, unit) {\n return abstract();\n }\n\n}\n\nDateAdapter.override = function (members) {\n Object.assign(DateAdapter.prototype, members);\n};\n\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n\n return getRelativePosition$1(e, chart);\n}\n\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n var _metasets$i = metasets[i];\n index = _metasets$i.index;\n data = _metasets$i.data;\n\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\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\n if (iScale && axis === iScale.axis && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n\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\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\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\n\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const _metasets$i2 = metasets[i],\n index = _metasets$i2.index,\n data = _metasets$i2.data;\n\n const _binarySearch = binarySearch(metasets[i], axis, value, intersect),\n lo = _binarySearch.lo,\n hi = _binarySearch.hi;\n\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n\n if (!element.skip) {\n handler(element, index, j);\n }\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}\n\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n\n const evaluationFunc = function (element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n let items = [];\n\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n\n const evaluationFunc = function (element, datasetIndex, index) {\n if (intersect && !element.inRange(position.x, position.y, useFinalPosition)) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n\n if (!_isPointInArea(center, chart.chartArea, chart._minPadding)) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n\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\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n\n if (options.intersect && !intersectsItem) {\n return [];\n }\n\n return items;\n}\n\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition) : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach(meta => {\n const index = items[0].index;\n const element = meta.data[index];\n\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition) : getNearestItems(chart, position, axis, false, useFinalPosition);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n\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\n return items;\n },\n\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n\n x(chart, e, options, useFinalPosition) {\n options.axis = 'x';\n return getAxisItems(chart, e, options, useFinalPosition);\n },\n\n y(chart, e, options, useFinalPosition) {\n options.axis = 'y';\n return getAxisItems(chart, e, options, useFinalPosition);\n }\n\n }\n};\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\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}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n layoutBoxes.push({\n index: i,\n box,\n pos: box.position,\n horizontal: box.isHorizontal(),\n weight: box.weight\n });\n }\n\n return layoutBoxes;\n}\n\nfunction setLayoutDims(layouts, params) {\n let i, ilen, layout;\n\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n\n if (layout.horizontal) {\n layout.width = layout.box.fullSize && params.availableWidth;\n layout.height = params.hBoxMaxHeight;\n } else {\n layout.width = params.vBoxMaxWidth;\n layout.height = layout.box.fullSize && params.availableHeight;\n }\n }\n}\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}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout) {\n const box = layout.box;\n const maxPadding = chartArea.maxPadding;\n\n if (!isObject(layout.pos)) {\n if (layout.size) {\n chartArea[layout.pos] -= layout.size;\n }\n\n layout.size = layout.horizontal ? box.height : box.width;\n chartArea[layout.pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\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}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\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\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n\n const _updateDims = updateDims(chartArea, params, layout),\n same = _updateDims.same,\n other = _updateDims.other;\n\n refit |= same && refitBoxes.length;\n changed = changed || other;\n\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params) || changed;\n}\n\nfunction placeBoxes(boxes, chartArea, params) {\n const userPadding = params.padding;\n let x = chartArea.x;\n let y = chartArea.y;\n let i, ilen, layout, box;\n\n for (i = 0, ilen = boxes.length; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n if (layout.horizontal) {\n box.left = box.fullSize ? userPadding.left : chartArea.left;\n box.right = box.fullSize ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n box.top = y;\n box.bottom = y + box.height;\n box.width = box.right - box.left;\n y = box.bottom;\n } else {\n box.left = x;\n box.right = x + box.width;\n box.top = box.fullSize ? userPadding.top : chartArea.top;\n box.bottom = box.fullSize ? params.outerHeight - userPadding.right : chartArea.top + chartArea.h;\n box.height = box.bottom - box.top;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\ndefaults.set('layout', {\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\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n\n item._layers = item._layers || function () {\n return [{\n z: 0,\n\n draw(chartArea) {\n item.draw(chartArea);\n }\n\n }];\n };\n\n chart.boxes.push(item);\n },\n\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\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 setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params);\n fitBoxes(verticalBoxes, chartArea, params);\n\n if (fitBoxes(horizontalBoxes, chartArea, params)) {\n fitBoxes(verticalBoxes, chartArea, params);\n }\n\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params);\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 });\n }\n\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n\n releaseContext(context) {\n return false;\n }\n\n addEventListener(chart, type, listener) {}\n\n removeEventListener(chart, type, listener) {}\n\n getDevicePixelRatio() {\n return 1;\n }\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\n isAttached(canvas) {\n return true;\n }\n\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n\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};\n\nconst isNullOrEmpty = value => value === null || value === '';\n\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\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\n\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n\n const _getRelativePosition$ = getRelativePosition$1(event, chart),\n x = _getRelativePosition$.x,\n y = _getRelativePosition$.y;\n\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n\n const container = canvas && _getParentNode(canvas);\n\n const element = container || canvas;\n const observer = new MutationObserver(entries => {\n const parent = _getParentNode(element);\n\n entries.forEach(entry => {\n for (let i = 0; i < entry.addedNodes.length; i++) {\n const added = entry.addedNodes[i];\n\n if (added === element || added === parent) {\n listener(entry.target);\n }\n }\n });\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n\n const container = canvas && _getParentNode(canvas);\n\n if (!container) {\n return;\n }\n\n const observer = new MutationObserver(entries => {\n entries.forEach(entry => {\n for (let i = 0; i < entry.removedNodes.length; i++) {\n if (entry.removedNodes[i] === canvas) {\n listener();\n break;\n }\n }\n });\n });\n observer.observe(container, {\n childList: true\n });\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n\n const container = canvas && _getParentNode(canvas);\n\n if (!container) {\n return;\n }\n\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n\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\n if (width === 0 && height === 0) {\n return;\n }\n\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n 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}\n\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n releaseContext(context) {\n const canvas = context.canvas;\n\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(prop => {\n const value = initial[prop];\n\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\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\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\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\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n\n return !!(container && _getParentNode(container));\n }\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\n tooltipPosition(useFinalPosition) {\n const _this$getProps = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps.x,\n y = _this$getProps.y;\n\n return {\n x,\n y\n };\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n getProps(props, final) {\n const me = this;\n const anims = this.$animations;\n\n if (!final || !anims) {\n return me;\n }\n\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : me[prop];\n });\n return ret;\n }\n\n}\n\nElement.defaults = {};\nElement.defaultRoutes = undefined;\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n 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\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n\n const remain = tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n\n return '';\n }\n\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\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n\n return delta;\n}\n\nvar Ticks = {\n formatters\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});\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\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\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\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n\n const tickLength = scale._tickSize();\n\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n\n if (factor > spacing) {\n return factor;\n }\n }\n\n return Math.max(spacing, 1);\n}\n\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n\n return result;\n}\n\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n 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\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n\n return diff;\n}\n\nconst reverseAlign = align => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\n\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\n\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n\n return result;\n}\n\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n 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\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n\n lineValue += validIndex < index ? offset : -offset;\n\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n\n return lineValue;\n}\n\nfunction garbageCollect(caches, length) {\n each(caches, cache => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n\n gc.splice(0, gcLen);\n }\n });\n}\n\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n 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}\n\nfunction createScaleContext(parent, scale) {\n return Object.assign(Object.create(parent), {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return Object.assign(Object.create(parent), {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const top = scale.top,\n left = scale.left,\n bottom = scale.bottom,\n right = scale.right;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = offsetFromEdge(scale, position, offset);\n maxWidth = right - left;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\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\n init(options) {\n const me = this;\n me.options = options.setContext(me.getContext());\n me.axis = options.axis;\n me._userMin = me.parse(options.min);\n me._userMax = me.parse(options.max);\n me._suggestedMin = me.parse(options.suggestedMin);\n me._suggestedMax = me.parse(options.suggestedMax);\n }\n\n parse(raw, index) {\n return raw;\n }\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\n getMinMax(canStack) {\n const me = this;\n\n let _me$getUserBounds = me.getUserBounds(),\n min = _me$getUserBounds.min,\n max = _me$getUserBounds.max,\n minDefined = _me$getUserBounds.minDefined,\n maxDefined = _me$getUserBounds.maxDefined;\n\n let range;\n\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n\n const metas = me.getMatchingVisibleMetas();\n\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(me, canStack);\n\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n getPadding() {\n const me = this;\n return {\n left: me.paddingLeft || 0,\n top: me.paddingTop || 0,\n right: me.paddingRight || 0,\n bottom: me.paddingBottom || 0\n };\n }\n\n getTicks() {\n return this.ticks;\n }\n\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n\n update(maxWidth, maxHeight, margins) {\n const me = this;\n const tickOpts = me.options.ticks;\n const sampleSize = tickOpts.sampleSize;\n me.beforeUpdate();\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n me.ticks = null;\n me._labelSizes = null;\n me._gridLineItems = null;\n me._labelItems = null;\n me.beforeSetDimensions();\n me.setDimensions();\n me.afterSetDimensions();\n me._maxLength = me.isHorizontal() ? me.width + margins.left + margins.right : me.height + margins.top + margins.bottom;\n\n if (!me._dataLimitsCached) {\n me.beforeDataLimits();\n me.determineDataLimits();\n me.afterDataLimits();\n me._range = _addGrace(me, me.options.grace);\n me._dataLimitsCached = true;\n }\n\n me.beforeBuildTicks();\n me.ticks = me.buildTicks() || [];\n me.afterBuildTicks();\n const samplingEnabled = sampleSize < me.ticks.length;\n\n me._convertTicksToLabels(samplingEnabled ? sample(me.ticks, sampleSize) : me.ticks);\n\n me.configure();\n me.beforeCalculateLabelRotation();\n me.calculateLabelRotation();\n me.afterCalculateLabelRotation();\n\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n me.ticks = autoSkip(me, me.ticks);\n me._labelSizes = null;\n }\n\n if (samplingEnabled) {\n me._convertTicksToLabels(me.ticks);\n }\n\n me.beforeFit();\n me.fit();\n me.afterFit();\n me.afterUpdate();\n }\n\n configure() {\n const me = this;\n let reversePixels = me.options.reverse;\n let startPixel, endPixel;\n\n if (me.isHorizontal()) {\n startPixel = me.left;\n endPixel = me.right;\n } else {\n startPixel = me.top;\n endPixel = me.bottom;\n reversePixels = !reversePixels;\n }\n\n me._startPixel = startPixel;\n me._endPixel = endPixel;\n me._reversePixels = reversePixels;\n me._length = endPixel - startPixel;\n me._alignToPixels = me.options.alignToPixels;\n }\n\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n\n setDimensions() {\n const me = this;\n\n if (me.isHorizontal()) {\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n me.top = 0;\n me.bottom = me.height;\n }\n\n me.paddingLeft = 0;\n me.paddingTop = 0;\n me.paddingRight = 0;\n me.paddingBottom = 0;\n }\n\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n const me = this;\n me.chart.notifyPlugins(name, me.getContext());\n callback(me.options[name], [me]);\n }\n\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n\n determineDataLimits() {}\n\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n\n buildTicks() {\n return [];\n }\n\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n\n generateTickLabels(ticks) {\n const me = this;\n const tickOpts = me.options.ticks;\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], me);\n }\n\n for (i = 0; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n }\n\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n\n calculateLabelRotation() {\n const me = this;\n const options = me.options;\n const tickOpts = options.ticks;\n const numTicks = me.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!me._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !me.isHorizontal()) {\n me.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = me._getLabelSizes();\n\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n const maxWidth = _limitValue(me.chart.width - maxLabelWidth, 0, me.maxWidth);\n\n tickWidth = options.offset ? me.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = me.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, me.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(Math.min((labelSizes.highest.height + 6) / tickWidth, 1)), Math.asin(Math.min(maxHeight / maxLabelDiagonal, 1)) - Math.asin(maxLabelHeight / maxLabelDiagonal)));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n me.labelRotation = labelRotation;\n }\n\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n\n fit() {\n const me = this;\n const minSize = {\n width: 0,\n height: 0\n };\n const chart = me.chart,\n _me$options2 = me.options,\n tickOpts = _me$options2.ticks,\n titleOpts = _me$options2.title,\n gridOpts = _me$options2.grid;\n\n const display = me._isVisible();\n\n const isHorizontal = me.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n\n if (isHorizontal) {\n minSize.width = me.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = me.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n if (tickOpts.display && me.ticks.length) {\n const _me$_getLabelSizes = me._getLabelSizes(),\n first = _me$_getLabelSizes.first,\n last = _me$_getLabelSizes.last,\n widest = _me$_getLabelSizes.widest,\n highest = _me$_getLabelSizes.highest;\n\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(me.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(me.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n\n me._calculatePadding(first, last, sin, cos);\n }\n }\n\n me._handleMargins();\n\n if (isHorizontal) {\n me.width = me._length = chart.width - me._margins.left - me._margins.right;\n me.height = minSize.height;\n } else {\n me.width = minSize.width;\n me.height = me._length = chart.height - me._margins.top - me._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const me = this;\n const _me$options3 = me.options,\n _me$options3$ticks = _me$options3.ticks,\n align = _me$options3$ticks.align,\n padding = _me$options3$ticks.padding,\n position = _me$options3.position;\n const isRotated = me.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && me.axis === 'x';\n\n if (me.isHorizontal()) {\n const offsetLeft = me.getPixelForTick(0) - me.left;\n const offsetRight = me.right - me.getPixelForTick(me.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n me.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * me.width / (me.width - offsetLeft), 0);\n me.paddingRight = Math.max((paddingRight - offsetRight + padding) * me.width / (me.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n me.paddingTop = paddingTop + padding;\n me.paddingBottom = paddingBottom + padding;\n }\n }\n\n _handleMargins() {\n const me = this;\n\n if (me._margins) {\n me._margins.left = Math.max(me.paddingLeft, me._margins.left);\n me._margins.top = Math.max(me.paddingTop, me._margins.top);\n me._margins.right = Math.max(me.paddingRight, me._margins.right);\n me._margins.bottom = Math.max(me.paddingBottom, me._margins.bottom);\n }\n }\n\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n\n isHorizontal() {\n const _this$options = this.options,\n axis = _this$options.axis,\n position = _this$options.position;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n\n isFullSize() {\n return this.options.fullSize;\n }\n\n _convertTicksToLabels(ticks) {\n const me = this;\n me.beforeTickToLabelConversion();\n me.generateTickLabels(ticks);\n me.afterTickToLabelConversion();\n }\n\n _getLabelSizes() {\n const me = this;\n let labelSizes = me._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = me.options.ticks.sampleSize;\n let ticks = me.ticks;\n\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n me._labelSizes = labelSizes = me._computeLabelSizes(ticks, ticks.length);\n }\n\n return labelSizes;\n }\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\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\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = idx => ({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n\n getLabelForValue(value) {\n return value;\n }\n\n getPixelForValue(value, index) {\n return NaN;\n }\n\n getValueForPixel(pixel) {}\n\n getPixelForTick(index) {\n const ticks = this.ticks;\n\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n\n return this.getPixelForValue(ticks[index].value);\n }\n\n getPixelForDecimal(decimal) {\n const me = this;\n\n if (me._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = me._startPixel + decimal * me._length;\n return _int16Range(me._alignToPixels ? _alignPixel(me.chart, pixel, 0) : pixel);\n }\n\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\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\n getContext(index) {\n const me = this;\n const ticks = me.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(me.getContext(), index, tick));\n }\n\n return me.$context || (me.$context = createScaleContext(me.chart.getContext(), me));\n }\n\n _tickSize() {\n const me = this;\n const optionTicks = me.options.ticks;\n const rot = toRadians(me.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = me._getLabelSizes();\n\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 me.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n _computeGridLineItems(chartArea) {\n const me = this;\n const axis = me.axis;\n const chart = me.chart;\n const options = me.options;\n const grid = options.grid,\n position = options.position;\n const offset = grid.offset;\n const isHorizontal = me.isHorizontal();\n const ticks = me.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(me.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n\n const alignBorderValue = function (pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(me.bottom);\n ty1 = me.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(me.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = me.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(me.right);\n tx1 = me.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(me.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = me.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(me.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(me.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n for (i = 0; i < ticksLength; ++i) {\n const optsAtIndex = grid.setContext(me.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.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(me, i, offset);\n\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\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\n me._ticksLength = ticksLength;\n me._borderValue = borderValue;\n return items;\n }\n\n _computeLabelItems(chartArea) {\n const me = this;\n const axis = me.axis;\n const options = me.options;\n const position = options.position,\n optionTicks = options.ticks;\n const isHorizontal = me.isHorizontal();\n const ticks = me.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(me.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = me.bottom - hTickAndPadding;\n textAlign = me._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = me.top + hTickAndPadding;\n textAlign = me._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = me._getYAxisLabelAlignment(tl);\n\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = me._getYAxisLabelAlignment(tl);\n\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = me.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n\n textAlign = me._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 = me.chart.scales[positionAxisID].getPixelForValue(value);\n }\n\n textAlign = me._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = me._getLabelSizes();\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(me.getContext(i));\n pixel = me.getPixelForTick(i) + optionTicks.labelOffset;\n font = me._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\n if (isHorizontal) {\n x = pixel;\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\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\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n\n case 'bottom':\n top -= height;\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n\n case 'right':\n left -= width;\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const me = this;\n const _me$options4 = me.options,\n position = _me$options4.position,\n ticks = _me$options4.ticks;\n const rotation = -toRadians(me.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const me = this;\n const _me$options5 = me.options,\n position = _me$options5.position,\n _me$options5$ticks = _me$options5.ticks,\n crossAlign = _me$options5$ticks.crossAlign,\n mirror = _me$options5$ticks.mirror,\n padding = _me$options5$ticks.padding;\n\n const labelSizes = me._getLabelSizes();\n\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n textAlign = 'left';\n x = me.right + padding;\n } else {\n x = me.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = me.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n textAlign = 'right';\n x = me.left + padding;\n } else {\n x = me.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = me.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {\n textAlign,\n x\n };\n }\n\n _computeLabelArea() {\n const me = this;\n\n if (me.options.ticks.mirror) {\n return;\n }\n\n const chart = me.chart;\n const position = me.options.position;\n\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: me.left,\n bottom: chart.height,\n right: me.right\n };\n }\n\n if (position === 'top' || position === 'bottom') {\n return {\n top: me.top,\n left: 0,\n bottom: me.bottom,\n right: chart.width\n };\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\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const me = this;\n const grid = me.options.grid;\n\n if (!me._isVisible() || !grid.display) {\n return 0;\n }\n\n const ticks = me.ticks;\n const index = ticks.findIndex(t => t.value === value);\n\n if (index >= 0) {\n const opts = grid.setContext(me.getContext(index));\n return opts.lineWidth;\n }\n\n return 0;\n }\n\n drawGrid(chartArea) {\n const me = this;\n const grid = me.options.grid;\n const ctx = me.ctx;\n\n const items = me._gridLineItems || (me._gridLineItems = me._computeGridLineItems(chartArea));\n\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n\n drawBorder() {\n const me = this;\n const chart = me.chart,\n ctx = me.ctx,\n grid = me.options.grid;\n const borderOpts = grid.setContext(me.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n\n if (!axisWidth) {\n return;\n }\n\n const lastLineWidth = grid.setContext(me.getContext(0)).lineWidth;\n const borderValue = me._borderValue;\n let x1, x2, y1, y2;\n\n if (me.isHorizontal()) {\n x1 = _alignPixel(chart, me.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, me.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\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\n drawLabels(chartArea) {\n const me = this;\n const optionTicks = me.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = me.ctx;\n\n const area = me._computeLabelArea();\n\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = me._labelItems || (me._labelItems = me._computeLabelItems(chartArea));\n\n let i, ilen;\n\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\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\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n drawTitle() {\n const ctx = this.ctx,\n _this$options2 = this.options,\n position = _this$options2.position,\n title = _this$options2.title,\n reverse = _this$options2.reverse;\n\n if (!title.display) {\n return;\n }\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\n if (position === 'bottom') {\n offset += padding.bottom;\n\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const _titleArgs = titleArgs(this, offset, position, align),\n titleX = _titleArgs.titleX,\n titleY = _titleArgs.titleY,\n maxWidth = _titleArgs.maxWidth,\n rotation = _titleArgs.rotation;\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n\n draw(chartArea) {\n const me = this;\n\n if (!me._isVisible()) {\n return;\n }\n\n me.drawBackground();\n me.drawGrid(chartArea);\n me.drawBorder();\n me.drawTitle();\n me.drawLabels(chartArea);\n }\n\n _layers() {\n const me = this;\n const opts = me.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = opts.grid && opts.grid.z || 0;\n\n if (!me._isVisible() || me.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n\n draw(chartArea) {\n me.draw(chartArea);\n }\n\n }];\n }\n\n return [{\n z: gz,\n\n draw(chartArea) {\n me.drawBackground();\n me.drawGrid(chartArea);\n me.drawTitle();\n }\n\n }, {\n z: gz + 1,\n\n draw() {\n me.drawBorder();\n }\n\n }, {\n z: tz,\n\n draw(chartArea) {\n me.drawLabels(chartArea);\n }\n\n }];\n }\n\n getMatchingVisibleMetas(type) {\n const me = this;\n const metas = me.chart.getSortedVisibleDatasetMetas();\n const axisID = me.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n\n if (meta[axisID] === me.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n _maxDigits() {\n const me = this;\n\n const fontSize = me._resolveTickFontOptions(0).lineHeight;\n\n return (me.isHorizontal() ? me.width : me.height) / fontSize;\n }\n\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\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n register(item) {\n const me = this;\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n parentScope = me.register(proto);\n }\n\n const items = me.items;\n const id = item.id;\n const scope = me.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n\n if (me.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n get(id) {\n return this.items[id];\n }\n\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n\n}\n\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\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(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}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\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\n add() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this._each('register', args);\n }\n\n remove() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n this._each('unregister', args);\n }\n\n addControllers() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this._each('register', args, this.controllers);\n }\n\n addElements() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n this._each('register', args, this.elements);\n }\n\n addPlugins() {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n this._each('register', args, this.plugins);\n }\n\n addScales() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n this._each('register', args, this.scales);\n }\n\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\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\n this._each('unregister', args, this.controllers);\n }\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\n this._each('unregister', args, this.elements);\n }\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\n this._each('unregister', args, this.plugins);\n }\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\n this._each('unregister', args, this.scales);\n }\n\n _each(method, args, typedRegistry) {\n const me = this;\n [...args].forEach(arg => {\n const reg = typedRegistry || me._getRegistryForType(arg);\n\n if (typedRegistry || reg.isForType(arg) || reg === me.plugins && arg.id) {\n me._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || me._getRegistryForType(item);\n\n me._exec(method, itemReg, item);\n });\n }\n });\n }\n\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n\n if (reg.isForType(type)) {\n return reg;\n }\n }\n\n return this.plugins;\n }\n\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n\n return item;\n }\n\n}\n\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n\n notify(chart, hook, args, filter) {\n const me = this;\n\n if (hook === 'beforeInit') {\n me._init = me._createDescriptors(chart, true);\n\n me._notify(me._init, chart, 'install');\n }\n\n const descriptors = filter ? me._descriptors(chart).filter(filter) : me._descriptors(chart);\n\n const result = me._notify(descriptors, chart, hook, args);\n\n if (hook === 'destroy') {\n me._notify(descriptors, chart, 'stop');\n\n me._notify(me._init, chart, 'uninstall');\n }\n\n return result;\n }\n\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\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\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n\n}\n\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n\n return plugins;\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n\n if (options === true) {\n return {};\n }\n\n return options;\n}\n\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n\n if (opts === null) {\n continue;\n }\n\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\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}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\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 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}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n\n this._resolverCache.clear();\n }\n\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, () => [[`datasets.${datasetType}`, '']]);\n }\n\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, () => [[`datasets.${datasetType}.transitions.${transition}`, `transitions.${transition}`], [`datasets.${datasetType}`, '']]);\n }\n\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, () => [[`datasets.${datasetType}.elements.${elementType}`, `datasets.${datasetType}`, `elements.${elementType}`, '']]);\n }\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\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n\n let cache = _scopeCache.get(mainScope);\n\n if (!cache || resetCache) {\n cache = new Map();\n\n _scopeCache.set(mainScope, cache);\n }\n\n return cache;\n }\n\n getOptionScopes(mainScope, keyLists, resetCache) {\n const options = this.options,\n type = this.type;\n\n const cache = this._cachedScopes(mainScope, resetCache);\n\n const cached = cache.get(keyLists);\n\n if (cached) {\n return cached;\n }\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\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 = [...scopes];\n\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n\n return array;\n }\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\n resolveNamedOptions(scopes, names, context) {\n let prefixes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [''];\n const result = {\n $shared: true\n };\n\n const _getResolver = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver.resolver,\n subPrefixes = _getResolver.subPrefixes;\n\n let options = resolver;\n\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\n for (const prop of names) {\n result[prop] = options[prop];\n }\n\n return result;\n }\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\n const _getResolver2 = getResolver(this._resolverCache, scopes, prefixes),\n resolver = _getResolver2.resolver;\n\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n\n return cached;\n}\n\nfunction needContext(proxy, names) {\n const _descriptors2 = _descriptors(proxy),\n isScriptable = _descriptors2.isScriptable,\n isIndexable = _descriptors2.isIndexable;\n\n for (const prop of names) {\n if (isScriptable(prop) && isFunction(proxy[prop]) || isIndexable(prop) && isArray(proxy[prop])) {\n return true;\n }\n }\n\n return false;\n}\n\nvar version = \"3.3.2\";\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\n\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\n\nfunction compare2Level(l1, l2) {\n return function (a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\nfunction isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction getCanvas(item) {\n if (isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n\n if (item && item.canvas) {\n item = item.canvas;\n }\n\n return item;\n}\n\nconst instances = {};\n\nconst getChart = key => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter(c => c.canvas === canvas).pop();\n};\n\nclass Chart {\n constructor(item, config) {\n const me = this;\n this.config = config = new Config(config);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas can be reused.');\n }\n\n const options = config.createResolver(config.chartOptionScopes(), me.getContext());\n this.platform = me._initializePlatform(initialCanvas, config);\n const context = me.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.scale = undefined;\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(() => this.update('resize'), options.resizeDelay || 0);\n instances[me.id] = me;\n\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(me, 'complete', onAnimationsComplete);\n animator.listen(me, 'progress', onAnimationProgress);\n\n me._initialize();\n\n if (me.attached) {\n me.update();\n }\n }\n\n get aspectRatio() {\n const _this$options3 = this.options,\n aspectRatio = _this$options3.aspectRatio,\n maintainAspectRatio = _this$options3.maintainAspectRatio,\n width = this.width,\n height = this.height,\n _aspectRatio = this._aspectRatio;\n\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n _initialize() {\n const me = this;\n me.notifyPlugins('beforeInit');\n\n if (me.options.responsive) {\n me.resize();\n } else {\n retinaScale(me, me.options.devicePixelRatio);\n }\n\n me.bindEvents();\n me.notifyPlugins('afterInit');\n return me;\n }\n\n _initializePlatform(canvas, config) {\n if (config.platform) {\n return new config.platform();\n } else if (!isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return new BasicPlatform();\n }\n\n return new DomPlatform();\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\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\n _resize(width, height) {\n const me = this;\n const options = me.options;\n const canvas = me.canvas;\n const aspectRatio = options.maintainAspectRatio && me.aspectRatio;\n const newSize = me.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || me.platform.getDevicePixelRatio();\n me.width = newSize.width;\n me.height = newSize.height;\n me._aspectRatio = me.aspectRatio;\n\n if (!retinaScale(me, newRatio, true)) {\n return;\n }\n\n me.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [me, newSize], me);\n\n if (me.attached) {\n if (me._doResize()) {\n me.render();\n }\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\n buildOrUpdateScales() {\n const me = this;\n const options = me.options;\n const scaleOpts = options.scales;\n const scales = me.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\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\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\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n\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: me.ctx,\n chart: me\n });\n scales[scale.id] = scale;\n }\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(me, scale, scale.options);\n layouts.addBox(me, scale);\n });\n }\n\n _updateMetasets() {\n const me = this;\n const metasets = me._metasets;\n const numData = me.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n me._destroyDatasetMeta(i);\n }\n\n metasets.splice(numData, numMeta - numData);\n }\n\n me._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n _removeUnreferencedMetasets() {\n const me = this;\n const metasets = me._metasets,\n datasets = me.data.datasets;\n\n if (metasets.length > datasets.length) {\n delete me._stacks;\n }\n\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n me._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const me = this;\n const newControllers = [];\n const datasets = me.data.datasets;\n let i, ilen;\n\n me._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = me.getDatasetMeta(i);\n const type = dataset.type || me.config.type;\n\n if (meta.type && meta.type !== type) {\n me._destroyDatasetMeta(i);\n\n meta = me.getDatasetMeta(i);\n }\n\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, me.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = me.isDatasetVisible(i);\n\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(me, i);\n newControllers.push(meta.controller);\n }\n }\n\n me._updateMetasets();\n\n return newControllers;\n }\n\n _resetElements() {\n const me = this;\n each(me.data.datasets, (dataset, datasetIndex) => {\n me.getDatasetMeta(datasetIndex).controller.reset();\n }, me);\n }\n\n reset() {\n this._resetElements();\n\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const me = this;\n const config = me.config;\n config.update();\n me._options = config.createResolver(config.chartOptionScopes(), me.getContext());\n each(me.scales, scale => {\n layouts.removeBox(me, scale);\n });\n const animsDisabled = me._animationsDisabled = !me.options.animation;\n me.ensureScalesHaveIDs();\n me.buildOrUpdateScales();\n const existingEvents = new Set(Object.keys(me._listeners));\n const newEvents = new Set(me.options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== me.options.responsive) {\n me.unbindEvents();\n me.bindEvents();\n }\n\n me._plugins.invalidate();\n\n if (me.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n\n const newControllers = me.buildOrUpdateControllers();\n me.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n\n for (let i = 0, ilen = me.data.datasets.length; i < ilen; i++) {\n const _me$getDatasetMeta = me.getDatasetMeta(i),\n controller = _me$getDatasetMeta.controller;\n\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n\n me._minPadding = minPadding;\n\n me._updateLayout(minPadding);\n\n if (!animsDisabled) {\n each(newControllers, controller => {\n controller.reset();\n });\n }\n\n me._updateDatasets(mode);\n\n me.notifyPlugins('afterUpdate', {\n mode\n });\n\n me._layers.sort(compare2Level('z', '_idx'));\n\n if (me._lastEvent) {\n me._eventHandler(me._lastEvent, true);\n }\n\n me.render();\n }\n\n _updateLayout(minPadding) {\n const me = this;\n\n if (me.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n\n layouts.update(me, me.width, me.height, minPadding);\n const area = me.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n me._layers = [];\n each(me.boxes, box => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n\n if (box.configure) {\n box.configure();\n }\n\n me._layers.push(...box._layers());\n }, me);\n\n me._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n me.notifyPlugins('afterLayout');\n }\n\n _updateDatasets(mode) {\n const me = this;\n const isFunction = typeof mode === 'function';\n\n if (me.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n\n for (let i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me._updateDataset(i, isFunction ? mode({\n datasetIndex: i\n }) : mode);\n }\n\n me.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n\n _updateDataset(index, mode) {\n const me = this;\n const meta = me.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n\n if (me.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n me.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n const me = this;\n\n if (me.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n\n if (animator.has(me)) {\n if (me.attached && !animator.running(me)) {\n animator.start(me);\n }\n } else {\n me.draw();\n onAnimationsComplete({\n chart: me\n });\n }\n }\n\n draw() {\n const me = this;\n let i;\n\n if (me._resizeBeforeDraw) {\n const _me$_resizeBeforeDraw = me._resizeBeforeDraw,\n width = _me$_resizeBeforeDraw.width,\n height = _me$_resizeBeforeDraw.height;\n\n me._resize(width, height);\n\n me._resizeBeforeDraw = null;\n }\n\n me.clear();\n\n if (me.width <= 0 || me.height <= 0) {\n return;\n }\n\n if (me.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n\n const layers = me._layers;\n\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(me.chartArea);\n }\n\n me._drawDatasets();\n\n for (; i < layers.length; ++i) {\n layers[i].draw(me.chartArea);\n }\n\n me.notifyPlugins('afterDraw');\n }\n\n _getSortedDatasetMetas(filterVisible) {\n const me = this;\n const metasets = me._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n _drawDatasets() {\n const me = this;\n\n if (me.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n\n const metasets = me.getSortedVisibleDatasetMetas();\n\n for (let i = metasets.length - 1; i >= 0; --i) {\n me._drawDataset(metasets[i]);\n }\n\n me.notifyPlugins('afterDatasetsDraw');\n }\n\n _drawDataset(meta) {\n const me = this;\n const ctx = me.ctx;\n const clip = meta._clip;\n const area = me.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n\n if (me.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? me.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? me.height : area.bottom + clip.bottom\n });\n meta.controller.draw();\n unclipArea(ctx);\n args.cancelable = false;\n me.notifyPlugins('afterDatasetDraw', args);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const me = this;\n const dataset = me.data.datasets[datasetIndex];\n const metasets = me._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = {\n chart: this,\n type: 'chart'\n });\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n _updateDatasetVisibility(datasetIndex, visible) {\n const me = this;\n const mode = visible ? 'show' : 'hide';\n const meta = me.getDatasetMeta(datasetIndex);\n\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n me.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n me.update(ctx => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n\n hide(datasetIndex) {\n this._updateDatasetVisibility(datasetIndex, false);\n }\n\n show(datasetIndex) {\n this._updateDatasetVisibility(datasetIndex, true);\n }\n\n _destroyDatasetMeta(datasetIndex) {\n const me = this;\n const meta = me._metasets && me._metasets[datasetIndex];\n\n if (meta && meta.controller) {\n meta.controller._destroy();\n\n delete me._metasets[datasetIndex];\n }\n }\n\n destroy() {\n const me = this;\n const canvas = me.canvas,\n ctx = me.ctx;\n let i, ilen;\n me.stop();\n animator.remove(me);\n\n for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n me._destroyDatasetMeta(i);\n }\n\n me.config.clearCache();\n\n if (canvas) {\n me.unbindEvents();\n clearCanvas(canvas, ctx);\n me.platform.releaseContext(ctx);\n me.canvas = null;\n me.ctx = null;\n }\n\n me.notifyPlugins('destroy');\n delete instances[me.id];\n }\n\n toBase64Image() {\n return this.canvas.toDataURL(...arguments);\n }\n\n bindEvents() {\n this.bindUserEvents();\n\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n bindUserEvents() {\n const me = this;\n const listeners = me._listeners;\n const platform = me.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(me, type, listener);\n listeners[type] = listener;\n };\n\n const listener = function (e, x, y) {\n e.offsetX = x;\n e.offsetY = y;\n\n me._eventHandler(e);\n };\n\n each(me.options.events, type => _add(type, listener));\n }\n\n bindResponsiveEvents() {\n const me = this;\n\n if (!me._responsiveListeners) {\n me._responsiveListeners = {};\n }\n\n const listeners = me._responsiveListeners;\n const platform = me.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(me, type, listener);\n listeners[type] = listener;\n };\n\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(me, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (me.canvas) {\n me.resize(width, height);\n }\n };\n\n let detached;\n\n const attached = () => {\n _remove('attach', attached);\n\n me.attached = true;\n me.resize();\n\n _add('resize', listener);\n\n _add('detach', detached);\n };\n\n detached = () => {\n me.attached = false;\n\n _remove('resize', listener);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(me.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n unbindEvents() {\n const me = this;\n each(me._listeners, (listener, type) => {\n me.platform.removeEventListener(me, type, listener);\n });\n me._listeners = {};\n each(me._responsiveListeners, (listener, type) => {\n me.platform.removeEventListener(me, type, listener);\n });\n me._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n getActiveElements() {\n return this._active || [];\n }\n\n setActiveElements(activeElements) {\n const me = this;\n const lastActive = me._active || [];\n const active = activeElements.map(_ref3 => {\n let datasetIndex = _ref3.datasetIndex,\n index = _ref3.index;\n const meta = me.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n me._active = active;\n\n me._updateHoverStyles(active, lastActive);\n }\n }\n\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n _updateHoverStyles(active, lastActive, replay) {\n const me = this;\n const hoverOptions = me.options.hover;\n\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n me.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n me.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n _eventHandler(e, replay) {\n const me = this;\n const args = {\n event: e,\n replay,\n cancelable: true\n };\n\n const eventFilter = plugin => (plugin.options.events || this.options.events).includes(e.type);\n\n if (me.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = me._handleEvent(e, replay);\n\n args.cancelable = false;\n me.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n me.render();\n }\n\n return me;\n }\n\n _handleEvent(e, replay) {\n const me = this;\n const _me$_active = me._active,\n lastActive = _me$_active === void 0 ? [] : _me$_active,\n options = me.options;\n const hoverOptions = options.hover;\n const useFinalPosition = replay;\n let active = [];\n let changed = false;\n let lastEvent = null;\n\n if (e.type !== 'mouseout') {\n active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n lastEvent = e.type === 'click' ? me._lastEvent : e;\n }\n\n me._lastEvent = null;\n\n if (_isPointInArea(e, me.chartArea, me._minPadding)) {\n callback(options.onHover, [e, active, me], me);\n\n if (e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu') {\n callback(options.onClick, [e, active, me], me);\n }\n }\n\n changed = !_elementsEqual(active, lastActive);\n\n if (changed || replay) {\n me._active = active;\n\n me._updateHoverStyles(active, lastActive, replay);\n }\n\n me._lastEvent = lastEvent;\n return changed;\n }\n\n}\n\nconst invalidatePlugins = () => each(Chart.instances, chart => chart._plugins.invalidate());\n\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});\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\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n\n ctx.closePath();\n ctx.clip();\n}\n\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n\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\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\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n\nfunction pathArc(ctx, element, offset, end) {\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 + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + offset + pixelMargin : 0;\n const alpha = end - start;\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset;\n const endAngle = end - angleOffset;\n\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\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 ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n\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\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n\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\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, startAngle + innerStart / innerRadius, true);\n\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\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n\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\n ctx.closePath();\n}\n\nfunction drawArc(ctx, element, offset) {\n const fullCircles = element.fullCircles,\n startAngle = element.startAngle,\n circumference = element.circumference;\n let endAngle = element.endAngle;\n\n if (fullCircles) {\n pathArc(ctx, element, offset, startAngle + TAU);\n\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n\n pathArc(ctx, element, offset, endAngle);\n ctx.fill();\n return endAngle;\n}\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\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\n\nfunction drawBorder(ctx, element, offset, endAngle) {\n const options = element.options;\n const inner = options.borderAlign === 'inner';\n\n if (!options.borderWidth) {\n return;\n }\n\n if (inner) {\n ctx.lineWidth = options.borderWidth * 2;\n ctx.lineJoin = 'round';\n } else {\n ctx.lineWidth = options.borderWidth;\n ctx.lineJoin = 'bevel';\n }\n\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n\n pathArc(ctx, element, offset, endAngle);\n ctx.stroke();\n}\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\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n\n const _getAngleFromPoint = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n }),\n angle = _getAngleFromPoint.angle,\n distance = _getAngleFromPoint.distance;\n\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\n const betweenAngles = circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n\n const withinRadius = distance >= innerRadius && distance <= outerRadius;\n return betweenAngles && withinRadius;\n }\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\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n\n draw(ctx) {\n const me = this;\n const options = me.options,\n circumference = me.circumference;\n const offset = (options.offset || 0) / 2;\n me.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n me.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n\n if (circumference === 0 || me.innerRadius < 0 || me.outerRadius < 0) {\n return;\n }\n\n ctx.save();\n let radiusOffset = 0;\n\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (me.startAngle + me.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n\n if (me.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, me, radiusOffset);\n drawBorder(ctx, me, radiusOffset, endAngle);\n ctx.restore();\n }\n\n}\n\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n angle: undefined\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\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}\n\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\n\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n\n return lineTo;\n}\n\nfunction pathVars(points, segment) {\n 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}\n\nfunction pathSegment(ctx, line, segment, params) {\n const points = line.points,\n options = line.options;\n\n const _pathVars = pathVars(points, segment, params),\n count = _pathVars.count,\n start = _pathVars.start,\n loop = _pathVars.loop,\n ilen = _pathVars.ilen;\n\n const lineMethod = getLineMethod(options);\n\n let _ref4 = params || {},\n _ref4$move = _ref4.move,\n move = _ref4$move === void 0 ? true : _ref4$move,\n reverse = _ref4.reverse;\n\n let i, point, prev;\n\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n prev = point;\n }\n\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n\n return !!loop;\n}\n\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n\n const _pathVars2 = pathVars(points, segment, params),\n count = _pathVars2.count,\n start = _pathVars2.start,\n ilen = _pathVars2.ilen;\n\n const _ref5 = params || {},\n _ref5$move = _ref5.move,\n move = _ref5$move === void 0 ? true : _ref5$move,\n reverse = _ref5.reverse;\n\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n\n const pointIndex = index => (start + (reverse ? ilen - index : index)) % count;\n\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\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n\n if (point.skip) {\n continue;\n }\n\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n\n lastY = y;\n }\n\n drawX();\n}\n\nfunction _getSegmentMethod(line) {\n 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}\n\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n\n return _pointInLine;\n}\n\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n\n if (!path) {\n path = line._path = new Path2D();\n\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\n\nfunction strokePathDirect(ctx, line, start, count) {\n const segments = line.segments,\n options = line.options;\n\n const segmentMethod = _getSegmentMethod(line);\n\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n\n ctx.stroke();\n }\n}\n\nconst usePath2D = typeof Path2D === 'function';\n\nfunction draw(ctx, line, start, count) {\n if (usePath2D && line.segments.length === 1) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\n\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = 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\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n updateControlPoints(chartArea, indexAxis) {\n const me = this;\n const options = me.options;\n\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !me._pointsUpdated) {\n const loop = options.spanGaps ? me._loop : me._fullLoop;\n\n _updateBezierControlPoints(me._points, options, chartArea, loop, indexAxis);\n\n me._pointsUpdated = true;\n }\n }\n\n set points(points) {\n const me = this;\n me._points = points;\n delete me._segments;\n delete me._path;\n me._pointsUpdated = false;\n }\n\n get points() {\n return this._points;\n }\n\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\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\n interpolate(point, property) {\n const me = this;\n const options = me.options;\n const value = point[property];\n const points = me.points;\n\n const segments = _boundSegments(me, {\n property,\n start: value,\n end: value\n });\n\n if (!segments.length) {\n return;\n }\n\n const result = [];\n\n const _interpolate = _getInterpolationMethod(options);\n\n let i, ilen;\n\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\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n\n return result.length === 1 ? result[0] : result;\n }\n\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n\n return segmentMethod(ctx, this, segment, params);\n }\n\n path(ctx, start, count) {\n const me = this;\n const segments = me.segments;\n\n const segmentMethod = _getSegmentMethod(me);\n\n let loop = me._loop;\n start = start || 0;\n count = count || me.points.length - start;\n\n for (const segment of segments) {\n loop &= segmentMethod(ctx, me, segment, {\n start,\n end: start + count - 1\n });\n }\n\n return !!loop;\n }\n\n draw(ctx, chartArea, start, count) {\n const me = this;\n const options = me.options || {};\n const points = me.points || [];\n\n if (!points.length || !options.borderWidth) {\n return;\n }\n\n ctx.save();\n draw(ctx, me, start, count);\n ctx.restore();\n\n if (me.animated) {\n me._pointsUpdated = false;\n me._path = undefined;\n }\n }\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};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n\n const _el$getProps = el.getProps([axis], useFinalPosition),\n value = _el$getProps[axis];\n\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\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\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n\n const _this$getProps4 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps4.x,\n y = _this$getProps4.y;\n\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const _this$getProps5 = this.getProps(['x', 'y'], useFinalPosition),\n x = _this$getProps5.x,\n y = _this$getProps5.y;\n\n return {\n x,\n y\n };\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\n draw(ctx) {\n const me = this;\n const options = me.options;\n\n if (me.skip || options.radius < 0.1) {\n return;\n }\n\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, me.x, me.y);\n }\n\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n\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};\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\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {\n left,\n top,\n right,\n bottom\n };\n}\n\nfunction parseBorderSkipped(bar) {\n let edge = bar.options.borderSkipped;\n const res = {};\n\n if (!edge) {\n return res;\n }\n\n edge = bar.horizontal ? parseEdge(edge, 'left', 'right', bar.base > bar.x) : parseEdge(edge, 'bottom', 'top', bar.base < bar.y);\n res[edge] = true;\n return res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : Math.max(Math.min(value, max), min);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = parseBorderSkipped(bar);\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}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const _bar$getProps2 = bar.getProps(['enableBorderRadius']),\n enableBorderRadius = _bar$getProps2.enableBorderRadius;\n\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = parseBorderSkipped(bar);\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}\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}\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 || x >= bounds.left && x <= bounds.right) && (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\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\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const options = this.options;\n\n const _boundingRects = boundingRects(this),\n inner = _boundingRects.inner,\n outer = _boundingRects.outer;\n\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, outer);\n ctx.clip();\n addRectPath(ctx, inner);\n ctx.fillStyle = options.borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inner);\n ctx.fillStyle = options.backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\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\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n\n}\n\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n enableBorderRadius: true,\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});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n\n if (samples >= count) {\n return data.slice(start, start + count);\n }\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\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\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const _data$a = data[a],\n pointAx = _data$a.x,\n pointAy = _data$a.y;\n maxArea = area = -1;\n\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\n\nfunction minMaxDecimation(data, start, count, availableWidth) {\n 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\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\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex1]), {}, {\n x: avgX\n }));\n }\n\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push(_objectSpread(_objectSpread({}, data[intermediateIndex2]), {}, {\n x: avgX\n }));\n }\n }\n\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n\n return decimated;\n}\n\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n value: data\n });\n }\n}\n\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach(dataset => {\n cleanDecimatedDataset(dataset);\n });\n}\n\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const iScale = meta.iScale;\n\n const _iScale$getUserBounds2 = iScale.getUserBounds(),\n min = _iScale$getUserBounds2.min,\n max = _iScale$getUserBounds2.max,\n minDefined = _iScale$getUserBounds2.minDefined,\n maxDefined = _iScale$getUserBounds2.maxDefined;\n\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n\n return {\n start,\n count\n };\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\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\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n\n if (meta.type !== 'line') {\n return;\n }\n\n const xAxis = chart.scales[meta.xAxisID];\n\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n\n if (chart.options.parsing) {\n return;\n }\n\n let _getStartAndCountOfVi2 = getStartAndCountOfVisiblePointsSimplified(meta, data),\n start = _getStartAndCountOfVi2.start,\n count = _getStartAndCountOfVi2.count;\n\n if (count <= 4 * availableWidth) {\n cleanDecimatedDataset(dataset);\n return;\n }\n\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function () {\n return this._decimated;\n },\n set: function (d) {\n this._data = d;\n }\n });\n }\n\n let decimated;\n\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n\n dataset._decimated = decimated;\n });\n },\n\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n\n};\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}\n\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n\n if (fill === false || fill === null) {\n return false;\n }\n\n if (fill === true) {\n return 'origin';\n }\n\n return fill;\n}\n\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n\n let target = parseFloat(fill);\n\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n\n return target;\n }\n\n return ['origin', 'start', 'end', 'stack'].indexOf(fill) >= 0 && fill;\n}\n\nfunction computeLinearBoundary(source) {\n const _source$scale = source.scale,\n scale = _source$scale === void 0 ? {} : _source$scale,\n fill = source.fill;\n let target = null;\n let horizontal;\n\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n\n return null;\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\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\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\n}\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 target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n\n return target;\n}\n\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n\n return computeLinearBoundary(source);\n}\n\nfunction pointsFromSegments(boundary, line) {\n const _ref6 = boundary || {},\n _ref6$x = _ref6.x,\n x = _ref6$x === void 0 ? null : _ref6$x,\n _ref6$y = _ref6.y,\n y = _ref6$y === void 0 ? null : _ref6$y;\n\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(segment => {\n const first = linePoints[segment.start];\n const last = linePoints[segment.end];\n\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}\n\nfunction buildStackLine(source) {\n const chart = source.chart,\n 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(chart, index);\n linesBelow.push(createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n\n return new LineElement({\n points,\n options: {}\n });\n}\n\nconst isLineAndNotInHideAnimation = meta => meta.type === 'line' && !meta.hidden;\n\nfunction getLinesBelow(chart, index) {\n const below = [];\n const metas = chart.getSortedVisibleDatasetMetas();\n\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n\n if (meta.index === index) {\n break;\n }\n\n if (isLineAndNotInHideAnimation(meta)) {\n below.unshift(meta.dataset);\n }\n }\n\n return below;\n}\n\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n\n const _findPoint = findPoint(line, sourcePoint, 'x'),\n first = _findPoint.first,\n last = _findPoint.last,\n point = _findPoint.point;\n\n if (!point || first && last) {\n continue;\n }\n\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n\n if (!last) {\n break;\n }\n }\n }\n\n points.push(...postponed);\n}\n\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n\n if (!point) {\n return {};\n }\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\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\n if (pointValue >= firstValue && pointValue <= lastValue) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n\n return {\n first,\n last,\n point\n };\n}\n\nfunction getTarget(source) {\n const chart = source.chart,\n fill = source.fill,\n line = source.line;\n\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n\n const boundary = computeBoundary(source);\n\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n\n return createBoundaryLine(boundary, line);\n}\n\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n\n if (!propagate) {\n return fill;\n }\n\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n\n target = sources[fill];\n\n if (!target) {\n return false;\n }\n\n if (target.visible) {\n return fill;\n }\n\n visited.push(fill);\n fill = target.fill;\n }\n\n return false;\n}\n\nfunction _clip(ctx, target, clipY) {\n ctx.beginPath();\n target.path(ctx);\n ctx.lineTo(target.last().x, clipY);\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\n\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n\n let start = first[property];\n let end = last[property];\n\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n\n return {\n property,\n start,\n end\n };\n}\n\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n\n for (const segment of segments) {\n const bounds = getBounds(property, points[segment.start], points[segment.end], segment.loop);\n\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[segment.start],\n end: points[segment.end]\n });\n continue;\n }\n\n const targetSegments = _boundSegments(target, bounds);\n\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n\n const fillSources = _boundSegment(segment, points, subBounds);\n\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\n return parts;\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\n const _ref7 = bounds || {},\n property = _ref7.property,\n start = _ref7.start,\n end = _ref7.end;\n\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\n\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\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\n const segments = _segments(line, target, property);\n\n for (const _ref8 of segments) {\n const src = _ref8.source;\n const tgt = _ref8.target;\n const start = _ref8.start;\n const end = _ref8.end;\n\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\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n const loop = lineLoop && targetLoop;\n\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}\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\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n\n _fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n\n ctx.restore();\n ctx.save();\n\n _clip(ctx, target, area.bottom);\n }\n\n _fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n\n ctx.restore();\n}\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\n const _ref9 = fillOption || {},\n _ref9$above = _ref9.above,\n above = _ref9$above === void 0 ? color : _ref9$above,\n _ref9$below = _ref9.below,\n below = _ref9$below === void 0 ? color : _ref9$below;\n\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}\n\nvar plugin_filler = {\n id: 'filler',\n\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n\n meta.$filler = source;\n sources.push(source);\n }\n\n for (i = 0; i < count; ++i) {\n source = sources[i];\n\n if (!source || source.fill === false) {\n continue;\n }\n\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (!source) {\n continue;\n }\n\n source.line.updateControlPoints(area, source.axis);\n\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n\n const metasets = chart.getSortedVisibleDatasetMetas();\n\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n\n drawfill(chart.ctx, source, chart.chartArea);\n },\n\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\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\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\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\n update(maxWidth, maxHeight, margins) {\n const me = this;\n me.maxWidth = maxWidth;\n me.maxHeight = maxHeight;\n me._margins = margins;\n me.setDimensions();\n me.buildLabels();\n me.fit();\n }\n\n setDimensions() {\n const me = this;\n\n if (me.isHorizontal()) {\n me.width = me.maxWidth;\n me.left = 0;\n me.right = me.width;\n } else {\n me.height = me.maxHeight;\n me.top = 0;\n me.bottom = me.height;\n }\n }\n\n buildLabels() {\n const me = this;\n const labelOpts = me.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter(item => labelOpts.filter(item, me.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, me.chart.data));\n }\n\n if (me.options.reverse) {\n legendItems.reverse();\n }\n\n me.legendItems = legendItems;\n }\n\n fit() {\n const me = this;\n const options = me.options,\n ctx = me.ctx;\n\n if (!options.display) {\n me.width = me.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n\n const titleHeight = me._computeTitleHeight();\n\n const _getBoxSize = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize.boxWidth,\n itemHeight = _getBoxSize.itemHeight;\n\n let width, height;\n ctx.font = labelFont.string;\n\n if (me.isHorizontal()) {\n width = me.maxWidth;\n height = me._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = me.maxHeight;\n width = me._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n\n me.width = Math.min(width, options.maxWidth || me.maxWidth);\n me.height = Math.min(height, options.maxHeight || me.maxHeight);\n }\n\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const me = this;\n const ctx = me.ctx,\n maxWidth = me.maxWidth,\n padding = me.options.labels.padding;\n const hitboxes = me.legendHitBoxes = [];\n const lineWidths = me.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 me.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const me = this;\n const ctx = me.ctx,\n maxHeight = me.maxHeight,\n padding = me.options.labels.padding;\n const hitboxes = me.legendHitBoxes = [];\n const columnSizes = me.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let top = 0;\n let col = 0;\n me.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n\n if (i > 0 && currentColHeight + fontSize + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n top = 0;\n currentColWidth = currentColHeight = 0;\n }\n\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += fontSize + padding;\n hitboxes[i] = {\n left,\n top,\n col,\n width: itemWidth,\n height: itemHeight\n };\n top += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n\n adjustHitBoxes() {\n const me = this;\n\n if (!me.options.display) {\n return;\n }\n\n const titleHeight = me._computeTitleHeight();\n\n const hitboxes = me.legendHitBoxes,\n _me$options6 = me.options,\n align = _me$options6.align,\n padding = _me$options6.labels.padding;\n\n if (this.isHorizontal()) {\n let row = 0;\n\n let left = _alignStartEnd(align, me.left + padding, me.right - me.lineWidths[row]);\n\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, me.left + padding, me.right - me.lineWidths[row]);\n }\n\n hitbox.top += me.top + titleHeight + padding;\n hitbox.left = left;\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n\n let top = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - me.columnSizes[col].height);\n\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - me.columnSizes[col].height);\n }\n\n hitbox.top = top;\n hitbox.left += me.left + padding;\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n const me = this;\n\n if (me.options.display) {\n const ctx = me.ctx;\n clipArea(ctx, me);\n\n me._draw();\n\n unclipArea(ctx);\n }\n }\n\n _draw() {\n const me = this;\n const opts = me.options,\n columnSizes = me.columnSizes,\n lineWidths = me.lineWidths,\n ctx = me.ctx;\n const align = opts.align,\n labelOpts = opts.labels;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, me.left, me.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 me.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const _getBoxSize2 = getBoxSize(labelOpts, fontSize),\n boxWidth = _getBoxSize2.boxWidth,\n boxHeight = _getBoxSize2.boxHeight,\n itemHeight = _getBoxSize2.itemHeight;\n\n const drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\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\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * 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 drawPoint(ctx, drawOptions, centerX, centerY);\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\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\n ctx.fill();\n\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function (x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: legendItem.textAlign\n });\n };\n\n const isHorizontal = me.isHorizontal();\n\n const titleHeight = this._computeTitleHeight();\n\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, me.left + padding, me.right - lineWidths[0]),\n y: me.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: me.left + padding,\n y: _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(me.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n me.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 + fontSize / 2 + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(me.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > me.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, me.left + padding, me.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > me.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, me.top + titleHeight + padding, me.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, me.right);\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(me.ctx, opts.textDirection);\n }\n\n drawTitle() {\n const me = this;\n const opts = me.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, me.left, me.width);\n const ctx = me.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = me.left;\n let maxWidth = me.width;\n\n if (this.isHorizontal()) {\n maxWidth = Math.max(...me.lineWidths);\n y = me.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, me.right - maxWidth);\n } else {\n const maxHeight = me.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, me.top, me.bottom - maxHeight - opts.labels.padding - me._computeTitleHeight());\n }\n\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n _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\n _getLegendItemAt(x, y) {\n const me = this;\n let i, hitBox, lh;\n\n if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n lh = me.legendHitBoxes;\n\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n return me.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n handleEvent(e) {\n const me = this;\n const opts = me.options;\n\n if (!isListened(e.type, opts)) {\n return;\n }\n\n const hoveredItem = me._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove') {\n const previous = me._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, me], me);\n }\n\n me._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, me], me);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, me], me);\n }\n }\n\n}\n\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n\n return false;\n}\n\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n\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\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n labels: {\n color: ctx => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n\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 },\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};\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\n update(maxWidth, maxHeight) {\n const me = this;\n const opts = me.options;\n me.left = 0;\n me.top = 0;\n\n if (!opts.display) {\n me.width = me.height = me.right = me.bottom = 0;\n return;\n }\n\n me.width = me.right = maxWidth;\n me.height = me.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n me._padding = toPadding(opts.padding);\n\n const textSize = lineCount * toFont(opts.font).lineHeight + me._padding.height;\n\n if (me.isHorizontal()) {\n me.height = textSize;\n } else {\n me.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\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\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n\n maxWidth = bottom - top;\n }\n\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n\n draw() {\n const me = this;\n const ctx = me.ctx;\n const opts = me.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + me._padding.top;\n\n const _me$_drawArgs = me._drawArgs(offset),\n titleX = _me$_drawArgs.titleX,\n titleY = _me$_drawArgs.titleY,\n maxWidth = _me$_drawArgs.maxWidth,\n rotation = _me$_drawArgs.rotation;\n\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\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}\n\nvar plugin_title = {\n id: 'title',\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\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 positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n\n return {\n x: x / count,\n y: y / count\n };\n },\n\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n\n};\n\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n\n return str;\n}\n\nfunction createTooltipItem(chart, item) {\n const element = item.element,\n datasetIndex = item.datasetIndex,\n index = item.index;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n\n const _controller$getLabelA = controller.getLabelAndValue(index),\n label = _controller$getLabelA.label,\n value = _controller$getLabelA.value;\n\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}\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\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\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\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n\n let widthPadding = 0;\n\n const maxLineWidth = function (line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 : 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}\n\nfunction determineYAlign(chart, size) {\n const y = size.y,\n height = size.height;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const x = size.x,\n width = size.width;\n const caret = options.caretSize + options.caretPadding;\n\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n 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\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\nfunction determineAlignment(chart, options, size) {\n const yAlign = options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let x = size.x,\n width = size.width;\n\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n let y = size.y,\n height = size.height;\n\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n\n return y;\n}\n\nfunction getBackgroundPoint(options, size, alignment, chart) {\n 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 radiusAndPadding = cornerRadius + caretPadding;\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= radiusAndPadding;\n } else if (xAlign === 'right') {\n x += radiusAndPadding;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n 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}\n\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return Object.assign(Object.create(parent), {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\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}\n\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._chart = config._chart;\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.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\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n _resolveAnimations() {\n const me = this;\n const cached = me._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = me._chart;\n const options = me.options.setContext(me.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(me._chart, opts);\n\n if (opts._cacheable) {\n me._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n getContext() {\n const me = this;\n return me.$context || (me.$context = createTooltipContext(me._chart.getContext(), me, me._tooltipItems));\n }\n\n getTitle(context, options) {\n const me = this;\n const callbacks = options.callbacks;\n const beforeTitle = callbacks.beforeTitle.apply(me, [context]);\n const title = callbacks.title.apply(me, [context]);\n const afterTitle = callbacks.afterTitle.apply(me, [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\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n\n getBody(tooltipItems, options) {\n const me = this;\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(me, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(me, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(me, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n\n getFooter(tooltipItems, options) {\n const me = this;\n const callbacks = options.callbacks;\n const beforeFooter = callbacks.beforeFooter.apply(me, [tooltipItems]);\n const footer = callbacks.footer.apply(me, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(me, [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\n _createItems(options) {\n const me = this;\n const active = me._active;\n const data = me._chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(me._chart, active[i]));\n }\n\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n each(tooltipItems, context => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(me, context));\n labelPointStyles.push(scoped.labelPointStyle.call(me, context));\n labelTextColors.push(scoped.labelTextColor.call(me, context));\n });\n me.labelColors = labelColors;\n me.labelPointStyles = labelPointStyles;\n me.labelTextColors = labelTextColors;\n me.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const me = this;\n const options = me.options.setContext(me.getContext());\n const active = me._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (me.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(me, active, me._eventPosition);\n tooltipItems = me._createItems(options);\n me.title = me.getTitle(tooltipItems, options);\n me.beforeBody = me.getBeforeBody(tooltipItems, options);\n me.body = me.getBody(tooltipItems, options);\n me.afterBody = me.getAfterBody(tooltipItems, options);\n me.footer = me.getFooter(tooltipItems, options);\n const size = me._size = getTooltipSize(me, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(me._chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, me._chart);\n me.xAlign = alignment.xAlign;\n me.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n me._tooltipItems = tooltipItems;\n me.$context = undefined;\n\n if (properties) {\n me._resolveAnimations().update(me, properties);\n }\n\n if (changed && options.external) {\n options.external.call(me, {\n chart: me._chart,\n tooltip: me,\n replay\n });\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\n getCaretPosition(tooltipPoint, size, options) {\n const xAlign = this.xAlign,\n yAlign = this.yAlign;\n const cornerRadius = options.cornerRadius,\n caretSize = options.caretSize;\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\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + cornerRadius + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - cornerRadius - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n\n y3 = y1;\n }\n\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n\n drawTitle(pt, ctx, options) {\n const me = this;\n const title = me.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, me.x, me.width);\n pt.x = getAlignedX(me, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const me = this;\n const labelColors = me.labelColors[i];\n const labelPointStyle = me.labelPointStyles[i];\n const boxHeight = options.boxHeight,\n boxWidth = options.boxWidth;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(me, '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\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 = 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);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n\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\n ctx.fillStyle = me.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const me = this;\n const body = me.body;\n const bodySpacing = options.bodySpacing,\n bodyAlign = options.bodyAlign,\n displayColors = options.displayColors,\n boxHeight = options.boxHeight,\n boxWidth = options.boxWidth;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, me.x, me.width);\n\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\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(me, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(me.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + 1 : boxWidth + 2 : 0;\n\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = me.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n\n if (displayColors && lines.length) {\n me._drawColorBox(ctx, pt, i, rtlHelper, options);\n\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(me.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n\n drawFooter(pt, ctx, options) {\n const me = this;\n const footer = me.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, me.x, me.width);\n pt.x = getAlignedX(me, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n 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 radius = options.cornerRadius;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n _updateAnimationTarget(options) {\n const me = this;\n const chart = me._chart;\n const anims = me.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n\n if (animX || animY) {\n const position = positioners[options.position].call(me, me._active, me._eventPosition);\n\n if (!position) {\n return;\n }\n\n const size = me._size = getTooltipSize(me, options);\n const positionAndSize = Object.assign({}, position, me._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n\n if (animX._to !== point.x || animY._to !== point.y) {\n me.xAlign = alignment.xAlign;\n me.yAlign = alignment.yAlign;\n me.width = size.width;\n me.height = size.height;\n me.caretX = position.x;\n me.caretY = position.y;\n\n me._resolveAnimations().update(me, point);\n }\n }\n }\n\n draw(ctx) {\n const me = this;\n const options = me.options.setContext(me.getContext());\n let opacity = me.opacity;\n\n if (!opacity) {\n return;\n }\n\n me._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: me.width,\n height: me.height\n };\n const pt = {\n x: me.x,\n y: me.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = me.title.length || me.beforeBody.length || me.body.length || me.afterBody.length || me.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n me.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n me.drawTitle(pt, ctx, options);\n me.drawBody(pt, ctx, options);\n me.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n\n getActiveElements() {\n return this._active || [];\n }\n\n setActiveElements(activeElements, eventPosition) {\n const me = this;\n const lastActive = me._active;\n const active = activeElements.map(_ref10 => {\n let datasetIndex = _ref10.datasetIndex,\n index = _ref10.index;\n\n const meta = me._chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n\n const positionChanged = me._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n me._active = active;\n me._eventPosition = eventPosition;\n me.update(true);\n }\n }\n\n handleEvent(e, replay) {\n const me = this;\n const options = me.options;\n const lastActive = me._active || [];\n let changed = false;\n let active = [];\n\n if (e.type !== 'mouseout') {\n active = me._chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n }\n\n const positionChanged = me._positionChanged(active, e);\n\n changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n if (changed) {\n me._active = active;\n\n if (options.enabled || options.external) {\n me._eventPosition = {\n x: e.x,\n y: e.y\n };\n me.update(true, replay);\n }\n }\n\n return changed;\n }\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\n}\n\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n _chart: chart,\n options\n });\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n\n if (chart.tooltip.handleEvent(args.event, useFinalPosition)) {\n args.changed = true;\n }\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 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\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\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n\n const value = tooltipItem.formattedValue;\n\n if (!isNullOrUndef(value)) {\n label += value;\n }\n\n return label;\n },\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\n labelTextColor() {\n return this.options.bodyColor;\n },\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\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: plugin_filler,\n Legend: plugin_legend,\n Title: plugin_title,\n Tooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index) => typeof raw === 'string' ? labels.push(raw) - 1 : isNaN(raw) ? null : index;\n\nfunction findOrAddLabel(labels, raw, index) {\n const first = labels.indexOf(raw);\n\n if (first === -1) {\n return addIfString(labels, raw, index);\n }\n\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw));\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const me = this;\n\n const _me$getUserBounds2 = me.getUserBounds(),\n minDefined = _me$getUserBounds2.minDefined,\n maxDefined = _me$getUserBounds2.maxDefined;\n\n let _me$getMinMax = me.getMinMax(true),\n min = _me$getMinMax.min,\n max = _me$getMinMax.max;\n\n if (me.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n\n if (!maxDefined) {\n max = me.getLabels().length - 1;\n }\n }\n\n me.min = min;\n me.max = max;\n }\n\n buildTicks() {\n const me = this;\n const min = me.min;\n const max = me.max;\n const offset = me.options.offset;\n const ticks = [];\n let labels = me.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n me._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n me._startValue = me.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({\n value\n });\n }\n\n return ticks;\n }\n\n getLabelForValue(value) {\n const me = this;\n const labels = me.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n\n return value;\n }\n\n configure() {\n const me = this;\n super.configure();\n\n if (!me.isHorizontal()) {\n me._reversePixels = !me._reversePixels;\n }\n }\n\n getPixelForValue(value) {\n const me = this;\n\n if (typeof value !== 'number') {\n value = me.parse(value);\n }\n\n return value === null ? NaN : me.getPixelForDecimal((value - me._startValue) / me._valueRange);\n }\n\n getPixelForTick(index) {\n const me = this;\n const ticks = me.ticks;\n\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n\n return me.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n const me = this;\n return Math.round(me._startValue + me.getDecimalForPixel(pixel) * me._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n\n}\n\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\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\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{\n value: rmin\n }, {\n value: rmax\n }];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.min((max - min) / spacing, maxTicks);\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n 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\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n\n if (niceMin < min) {\n j++;\n }\n\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n ticks.push({\n value: Math.round((niceMin + j * spacing) * factor) / factor\n });\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n if (almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, _ref11) {\n let horizontal = _ref11.horizontal,\n minRotation = _ref11.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}\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\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const me = this;\n const beginAtZero = me.options.beginAtZero;\n\n const _me$getUserBounds3 = me.getUserBounds(),\n minDefined = _me$getUserBounds3.minDefined,\n maxDefined = _me$getUserBounds3.maxDefined;\n\n let min = me.min,\n max = me.max;\n\n const setMin = v => min = minDefined ? min : v;\n\n const setMax = v => max = maxDefined ? max : v;\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n setMax(max + 1);\n\n if (!beginAtZero) {\n setMin(min - 1);\n }\n }\n\n me.min = min;\n me.max = max;\n }\n\n getTickLimit() {\n const me = this;\n const tickOpts = me.options.ticks;\n let maxTicksLimit = tickOpts.maxTicksLimit,\n stepSize = tickOpts.stepSize;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;\n } else {\n maxTicks = me.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const me = this;\n const opts = me.options;\n const tickOpts = opts.ticks;\n let maxTicks = me.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: me._maxDigits(),\n horizontal: me.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = me._range || me;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, me, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n\n return ticks;\n }\n\n configure() {\n const me = this;\n const ticks = me.ticks;\n let start = me.min;\n let end = me.max;\n super.configure();\n\n if (me.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n\n me._startValue = start;\n me._endValue = end;\n me._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale);\n }\n\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const me = this;\n\n const _me$getMinMax2 = me.getMinMax(true),\n min = _me$getMinMax2.min,\n max = _me$getMinMax2.max;\n\n me.min = isNumberFinite(min) ? min : 0;\n me.max = isNumberFinite(max) ? max : 1;\n me.handleTickRangeOptions();\n }\n\n computeTickLimit() {\n const me = this;\n const horizontal = me.isHorizontal();\n const length = horizontal ? me.width : me.height;\n const minRotation = toRadians(me.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n\n const tickFont = me._resolveTickFontOptions(0);\n\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n\n}\n\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, Math.floor(log10(tickVal)));\n return remain === 1;\n}\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\n do {\n ticks.push({\n value: tickVal,\n major: isMajor(tickVal)\n });\n ++significand;\n\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || exp === endExp && significand < endSignificand);\n\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({\n value: lastTick,\n major: isMajor(tickVal)\n });\n return ticks;\n}\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\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const me = this;\n\n const _me$getMinMax3 = me.getMinMax(true),\n min = _me$getMinMax3.min,\n max = _me$getMinMax3.max;\n\n me.min = isNumberFinite(min) ? Math.max(0, min) : null;\n me.max = isNumberFinite(max) ? Math.max(0, max) : null;\n\n if (me.options.beginAtZero) {\n me._zero = true;\n }\n\n me.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const me = this;\n\n const _me$getUserBounds4 = me.getUserBounds(),\n minDefined = _me$getUserBounds4.minDefined,\n maxDefined = _me$getUserBounds4.maxDefined;\n\n let min = me.min;\n let max = me.max;\n\n const setMin = v => min = minDefined ? min : v;\n\n const setMax = v => max = maxDefined ? max : v;\n\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n\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\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n\n if (me._zero && me.min !== me._suggestedMin && min === exp(me.min, 0)) {\n setMin(exp(min, -1));\n }\n\n me.min = min;\n me.max = max;\n }\n\n buildTicks() {\n const me = this;\n const opts = me.options;\n const generationOptions = {\n min: me._userMin,\n max: me._userMax\n };\n const ticks = generateTicks(generationOptions, me);\n\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, me, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n me.start = me.max;\n me.end = me.min;\n } else {\n me.start = me.min;\n me.end = me.max;\n }\n\n return ticks;\n }\n\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale);\n }\n\n configure() {\n const me = this;\n const start = me.min;\n super.configure();\n me._startValue = log10(start);\n me._valueRange = log10(me.max) - log10(start);\n }\n\n getPixelForValue(value) {\n const me = this;\n\n if (value === undefined || value === 0) {\n value = me.min;\n }\n\n if (value === null || isNaN(value)) {\n return NaN;\n }\n\n return me.getPixelForDecimal(value === me.min ? 0 : (log10(value) - me._startValue) / me._valueRange);\n }\n\n getValueForPixel(pixel) {\n const me = this;\n const decimal = me.getDecimalForPixel(pixel);\n return Math.pow(10, me._startValue + decimal * me._valueRange);\n }\n\n}\n\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\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\n return 0;\n}\n\nfunction measureLabelSize(ctx, lineHeight, label) {\n if (isArray(label)) {\n return {\n w: _longestText(ctx, ctx.font, label),\n h: label.length * lineHeight\n };\n }\n\n return {\n w: ctx.measureText(label).width,\n h: lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\nfunction fitWithPointLabels(scale) {\n const furthestLimits = {\n l: 0,\n r: scale.width,\n t: 0,\n b: scale.height - scale.paddingTop\n };\n const furthestAngles = {};\n let i, textSize, pointPosition;\n const labelSizes = [];\n const padding = [];\n const valueCount = scale.getLabels().length;\n\n for (i = 0; i < valueCount; i++) {\n const opts = scale.options.pointLabels.setContext(scale.getContext(i));\n padding[i] = opts.padding;\n pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i]);\n const plFont = toFont(opts.font);\n scale.ctx.font = plFont.string;\n textSize = measureLabelSize(scale.ctx, plFont.lineHeight, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = scale.getIndexAngle(i);\n const angle = 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\n if (hLimits.start < furthestLimits.l) {\n furthestLimits.l = hLimits.start;\n furthestAngles.l = angleRadians;\n }\n\n if (hLimits.end > furthestLimits.r) {\n furthestLimits.r = hLimits.end;\n furthestAngles.r = angleRadians;\n }\n\n if (vLimits.start < furthestLimits.t) {\n furthestLimits.t = vLimits.start;\n furthestAngles.t = angleRadians;\n }\n\n if (vLimits.end > furthestLimits.b) {\n furthestLimits.b = vLimits.end;\n furthestAngles.b = angleRadians;\n }\n }\n\n scale._setReductions(scale.drawingArea, furthestLimits, furthestAngles);\n\n scale._pointLabelItems = [];\n const opts = scale.options;\n const tickBackdropHeight = getTickBackdropHeight(opts);\n const outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n for (i = 0; i < valueCount; i++) {\n const extra = i === 0 ? tickBackdropHeight / 2 : 0;\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i]);\n const angle = toDegrees(scale.getIndexAngle(i));\n const size = labelSizes[i];\n adjustPointPositionForLabelHeight(angle, size, pointLabelPosition);\n const textAlign = getTextAlignForAngle(angle);\n let left;\n\n if (textAlign === 'left') {\n left = pointLabelPosition.x;\n } else if (textAlign === 'center') {\n left = pointLabelPosition.x - size.w / 2;\n } else {\n left = pointLabelPosition.x - size.w;\n }\n\n const right = left + size.w;\n scale._pointLabelItems[i] = {\n x: pointLabelPosition.x,\n y: pointLabelPosition.y,\n textAlign,\n left,\n top: pointLabelPosition.y,\n right,\n bottom: pointLabelPosition.y + size.h\n };\n }\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n if (angle === 90 || angle === 270) {\n position.y -= textSize.h / 2;\n } else if (angle > 270 || angle < 90) {\n position.y -= textSize.h;\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const ctx = scale.ctx,\n pointLabels = scale.options.pointLabels;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getContext(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\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\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}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const ctx = scale.ctx;\n\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\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const color = gridLineOpts.color,\n lineWidth = gridLineOpts.lineWidth;\n\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(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}\n\nfunction numberOrZero(param) {\n return isNumber(param) ? param : 0;\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\n setDimensions() {\n const me = this;\n me.width = me.maxWidth;\n me.height = me.maxHeight;\n me.paddingTop = getTickBackdropHeight(me.options) / 2;\n me.xCenter = Math.floor(me.width / 2);\n me.yCenter = Math.floor((me.height - me.paddingTop) / 2);\n me.drawingArea = Math.min(me.height - me.paddingTop, me.width) / 2;\n }\n\n determineDataLimits() {\n const me = this;\n\n const _me$getMinMax4 = me.getMinMax(false),\n min = _me$getMinMax4.min,\n max = _me$getMinMax4.max;\n\n me.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n me.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n me.handleTickRangeOptions();\n }\n\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n const me = this;\n LinearScaleBase.prototype.generateTickLabels.call(me, ticks);\n me._pointLabels = me.getLabels().map((value, index) => {\n const label = callback(me.options.pointLabels.callback, [value, index], me);\n return label || label === 0 ? label : '';\n });\n }\n\n fit() {\n const me = this;\n const opts = me.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(me);\n } else {\n me.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n _setReductions(largestPossibleRadius, furthestLimits, furthestAngles) {\n const me = this;\n let radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n let radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n let radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n let radiusReductionBottom = -Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);\n radiusReductionLeft = numberOrZero(radiusReductionLeft);\n radiusReductionRight = numberOrZero(radiusReductionRight);\n radiusReductionTop = numberOrZero(radiusReductionTop);\n radiusReductionBottom = numberOrZero(radiusReductionBottom);\n me.drawingArea = Math.max(largestPossibleRadius / 2, Math.min(Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)));\n me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n const me = this;\n const maxRight = me.width - rightMovement - me.drawingArea;\n const maxLeft = leftMovement + me.drawingArea;\n const maxTop = topMovement + me.drawingArea;\n const maxBottom = me.height - me.paddingTop - bottomMovement - me.drawingArea;\n me.xCenter = Math.floor((maxLeft + maxRight) / 2 + me.left);\n me.yCenter = Math.floor((maxTop + maxBottom) / 2 + me.top + me.paddingTop);\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / this.getLabels().length;\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n const me = this;\n\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n const scalingFactor = me.drawingArea / (me.max - me.min);\n\n if (me.options.reverse) {\n return (me.max - value) * scalingFactor;\n }\n\n return (value - me.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const me = this;\n const scaledDistance = distance / (me.drawingArea / (me.max - me.min));\n return me.options.reverse ? me.max - scaledDistance : me.min + scaledDistance;\n }\n\n getPointPosition(index, distanceFromCenter) {\n const me = this;\n const angle = me.getIndexAngle(index) - HALF_PI;\n return {\n x: Math.cos(angle) * distanceFromCenter + me.xCenter,\n y: Math.sin(angle) * distanceFromCenter + me.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\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\n drawBackground() {\n const me = this;\n const _me$options7 = me.options,\n backgroundColor = _me$options7.backgroundColor,\n circular = _me$options7.grid.circular;\n\n if (backgroundColor) {\n const ctx = me.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(me, me.getDistanceFromCenterForValue(me._endValue), circular, me.getLabels().length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n drawGrid() {\n const me = this;\n const ctx = me.ctx;\n const opts = me.options;\n const angleLines = opts.angleLines,\n grid = opts.grid;\n const labelCount = me.getLabels().length;\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(me, labelCount);\n }\n\n if (grid.display) {\n me.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = me.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(me.getContext(index - 1));\n drawRadiusLine(me, optsAtIndex, offset, labelCount);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = me.getLabels().length - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(me.getContext(i));\n const color = optsAtIndex.color,\n lineWidth = optsAtIndex.lineWidth;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = me.getDistanceFromCenterForValue(opts.ticks.reverse ? me.min : me.max);\n position = me.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(me.xCenter, me.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n drawBorder() {}\n\n drawLabels() {\n const me = this;\n const ctx = me.ctx;\n const opts = me.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = me.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(me.xCenter, me.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n me.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(me.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = me.getDistanceFromCenterForValue(me.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\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\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color\n });\n });\n ctx.restore();\n }\n\n drawTitle() {}\n\n}\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\n callback(label) {\n return label;\n },\n\n padding: 5\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);\n\nfunction sorter(a, b) {\n return a - b;\n}\n\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n 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\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\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\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n for (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}\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\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\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\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n\n return ticks;\n}\n\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n\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\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\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\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\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\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const me = this;\n const options = me.options;\n const adapter = me._adapter;\n const unit = options.time.unit || 'day';\n\n let _me$getUserBounds5 = me.getUserBounds(),\n min = _me$getUserBounds5.min,\n max = _me$getUserBounds5.max,\n minDefined = _me$getUserBounds5.minDefined,\n maxDefined = _me$getUserBounds5.maxDefined;\n\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n if (!minDefined || !maxDefined) {\n _applyBounds(me._getLabelBounds());\n\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(me.getMinMax(false));\n }\n }\n\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n me.min = Math.min(min, max - 1);\n me.max = Math.max(min + 1, max);\n }\n\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n\n return {\n min,\n max\n };\n }\n\n buildTicks() {\n const me = this;\n const options = me.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? me.getLabelTimestamps() : me._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n me.min = me._userMin || timestamps[0];\n me.max = me._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = me.min;\n const max = me.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n me._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, me.min, me.max, me._getLabelCapacity(min)) : determineUnitForFormatting(me, ticks.length, timeOpts.minUnit, me.min, me.max));\n me._majorUnit = !tickOpts.major.enabled || me._unit === 'year' ? undefined : determineMajorUnit(me._unit);\n me.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(me, ticks, me._majorUnit);\n }\n\n initOffsets(timestamps) {\n const me = this;\n let start = 0;\n let end = 0;\n let first, last;\n\n if (me.options.offset && timestamps.length) {\n first = me.getDecimalForValue(timestamps[0]);\n\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (me.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n\n last = me.getDecimalForValue(timestamps[timestamps.length - 1]);\n\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - me.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\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 me._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n\n _generate() {\n const me = this;\n const adapter = me._adapter;\n const min = me.min;\n const max = me.max;\n const options = me.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, me._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\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && me.getDataTimestamps();\n\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n\n getLabelForValue(value) {\n const me = this;\n const adapter = me._adapter;\n const timeOpts = me.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n _tickFormatFunction(time, index, ticks, format) {\n const me = this;\n const options = me.options;\n const formats = options.time.displayFormats;\n const unit = me._unit;\n const majorUnit = me._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\n const label = me._adapter.format(time, format || (major ? majorFormat : minorFormat));\n\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], me) : label;\n }\n\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n getDecimalForValue(value) {\n const me = this;\n return value === null ? NaN : (value - me.min) / (me.max - me.min);\n }\n\n getPixelForValue(value) {\n const me = this;\n const offsets = me._offsets;\n const pos = me.getDecimalForValue(value);\n return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n getValueForPixel(pixel) {\n const me = this;\n const offsets = me._offsets;\n const pos = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return me.min + pos * (me.max - me.min);\n }\n\n _getLabelSize(label) {\n const me = this;\n const ticksOpts = me.options.ticks;\n const tickLabelWidth = me.ctx.measureText(label).width;\n const angle = toRadians(me.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n\n const tickFontSize = me._resolveTickFontOptions(0).size;\n\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n\n _getLabelCapacity(exampleTime) {\n const me = this;\n const timeOpts = me.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n\n const exampleLabel = me._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(me, [exampleTime], me._majorUnit), format);\n\n const size = me._getLabelSize(exampleLabel);\n\n const capacity = Math.floor(me.isHorizontal() ? me.width / size.w : me.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n getDataTimestamps() {\n const me = this;\n let timestamps = me._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = me.getMatchingVisibleMetas();\n\n if (me._normalized && metas.length) {\n return me._cache.data = metas[0].controller.getAllParsedValues(me);\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(me));\n }\n\n return me._cache.data = me.normalize(timestamps);\n }\n\n getLabelTimestamps() {\n const me = this;\n const timestamps = me._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = me.getLabels();\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(me, labels[i]));\n }\n\n return me._cache.labels = me._normalized ? timestamps : me.normalize(timestamps);\n }\n\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n\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};\n\nfunction interpolate(table, val, reverse) {\n let prevSource, nextSource, prevTarget, nextTarget;\n\n if (reverse) {\n prevSource = Math.floor(val);\n nextSource = Math.ceil(val);\n prevTarget = table[prevSource];\n nextTarget = table[nextSource];\n } else {\n const result = _lookup(table, val);\n\n prevTarget = result.lo;\n nextTarget = result.hi;\n prevSource = table[prevTarget];\n nextSource = table[nextTarget];\n }\n\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\n\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._maxIndex = undefined;\n }\n\n initOffsets() {\n const me = this;\n\n const timestamps = me._getTimestampsForTable();\n\n me._table = me.buildLookupTable(timestamps);\n me._maxIndex = me._table.length - 1;\n super.initOffsets(timestamps);\n }\n\n buildLookupTable(timestamps) {\n const me = this;\n const min = me.min,\n max = me.max;\n\n if (!timestamps.length) {\n return [{\n time: min,\n pos: 0\n }, {\n time: max,\n pos: 1\n }];\n }\n\n const items = [min];\n let i, ilen, curr;\n\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n\n if (curr > min && curr < max) {\n items.push(curr);\n }\n }\n\n items.push(max);\n return items;\n }\n\n _getTimestampsForTable() {\n const me = this;\n let timestamps = me._cache.all || [];\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const data = me.getDataTimestamps();\n const label = me.getLabelTimestamps();\n\n if (data.length && label.length) {\n timestamps = me.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n\n timestamps = me._cache.all = timestamps;\n return timestamps;\n }\n\n getPixelForValue(value, index) {\n const me = this;\n const offsets = me._offsets;\n const pos = me._normalized && me._maxIndex > 0 && !isNullOrUndef(index) ? index / me._maxIndex : me.getDecimalForValue(value);\n return me.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n getDecimalForValue(value) {\n return interpolate(this._table, value) / this._maxIndex;\n }\n\n getValueForPixel(pixel) {\n const me = this;\n const offsets = me._offsets;\n const decimal = me.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(me._table, decimal * this._maxIndex, true);\n }\n\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, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, animator, controllers, elements, layouts, plugins, registerables, registry, scales };","/**\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';\n\nvar MDCRipple =\n/** @class */\nfunction (_super) {\n __extends(MDCRipple, _super);\n\n function MDCRipple() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.disabled = false;\n return _this;\n }\n\n MDCRipple.attachTo = function (root, opts) {\n if (opts === void 0) {\n opts = {\n isUnbounded: undefined\n };\n }\n\n var ripple = new MDCRipple(root); // Only override unbounded behavior if option is explicitly specified\n\n if (opts.isUnbounded !== undefined) {\n ripple.unbounded = opts.isUnbounded;\n }\n\n return ripple;\n };\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\n Object.defineProperty(MDCRipple.prototype, \"unbounded\", {\n get: function () {\n return Boolean(this.unbounded_);\n },\n set: function (unbounded) {\n this.unbounded_ = Boolean(unbounded);\n this.setUnbounded_();\n },\n enumerable: true,\n configurable: true\n });\n\n MDCRipple.prototype.activate = function () {\n this.foundation.activate();\n };\n\n MDCRipple.prototype.deactivate = function () {\n this.foundation.deactivate();\n };\n\n MDCRipple.prototype.layout = function () {\n this.foundation.layout();\n };\n\n MDCRipple.prototype.getDefaultFoundation = function () {\n return new MDCRippleFoundation(MDCRipple.createAdapter(this));\n };\n\n MDCRipple.prototype.initialSyncWithDOM = function () {\n var root = this.root;\n this.unbounded = '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\n\n MDCRipple.prototype.setUnbounded_ = function () {\n this.foundation.setUnbounded(Boolean(this.unbounded_));\n };\n\n return MDCRipple;\n}(MDCComponent);\n\nexport { MDCRipple };","export User = {\n\n isLoggedIn: -> @type() > 0\n isEmailVerified: -> document.body.dataset.emailVerified != undefined\n isFreeAccount: -> @status() is 'FreeAccount'\n isPaidExpired: -> @status() is 'ExpiredPaid'\n isFreeTrialActive: -> @status() is 'ActiveFreeTrial'\n isFreeTrialExpired: -> @status() is 'ExpiredFreeTrial'\n isPaidActive: -> @status() is 'ActivePaid' or @status() is 'Admin'\n hasActiveSubscription: -> @isFreeTrialActive() or @isPaidActive()\n\n type: -> document.body.dataset.userType\n isExpired: -> @isLoggedIn() and document.body.dataset.expired != undefined\n status: -> document.body.dataset.userStatus\n hasNotification: (shareId) -> @notificationShareIds().indexOf(shareId) > -1\n notificationCount: (shareId) ->\n index = @notificationShareIds().indexOf(shareId)\n return @notificationQuantities()[index] if index > -1\n null\n\n notificationShareIds: -> document.body.dataset.notifIds.split(\",\")\n notificationQuantities: -> document.body.dataset.notifCounts.split(\",\")\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 */\nvar cssClasses = {\n MENU_SELECTED_LIST_ITEM: 'mdc-menu-item--selected',\n MENU_SELECTION_GROUP: 'mdc-menu__selection-group',\n ROOT: 'mdc-menu'\n};\nvar strings = {\n ARIA_CHECKED_ATTR: 'aria-checked',\n ARIA_DISABLED_ATTR: 'aria-disabled',\n CHECKBOX_SELECTOR: 'input[type=\"checkbox\"]',\n LIST_SELECTOR: '.mdc-list',\n SELECTED_EVENT: 'MDCMenu:selected'\n};\nvar numbers = {\n FOCUS_ROOT_INDEX: -1\n};\nvar DefaultFocusState;\n\n(function (DefaultFocusState) {\n DefaultFocusState[DefaultFocusState[\"NONE\"] = 0] = \"NONE\";\n DefaultFocusState[DefaultFocusState[\"LIST_ROOT\"] = 1] = \"LIST_ROOT\";\n DefaultFocusState[DefaultFocusState[\"FIRST_ITEM\"] = 2] = \"FIRST_ITEM\";\n DefaultFocusState[DefaultFocusState[\"LAST_ITEM\"] = 3] = \"LAST_ITEM\";\n})(DefaultFocusState || (DefaultFocusState = {}));\n\nexport { cssClasses, strings, numbers, DefaultFocusState };","/**\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 /**\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;\n\nvar MDCSnackbarFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCSnackbarFoundation, _super);\n\n function MDCSnackbarFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCSnackbarFoundation.defaultAdapter), adapter)) || this;\n\n _this.isOpen_ = 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\n Object.defineProperty(MDCSnackbarFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: true,\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: true,\n configurable: true\n });\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\n MDCSnackbarFoundation.prototype.open = function () {\n var _this = this;\n\n this.clearAutoDismissTimer_();\n this.isOpen_ = true;\n this.adapter.notifyOpening();\n this.adapter.removeClass(CLOSING);\n this.adapter.addClass(OPENING);\n this.adapter.announce(); // Wait a frame once display is no longer \"none\", to establish basis for animation\n\n this.runNextAnimationFrame_(function () {\n _this.adapter.addClass(OPEN);\n\n _this.animationTimer_ = setTimeout(function () {\n var timeoutMs = _this.getTimeoutMs();\n\n _this.handleAnimationTimerEnd_();\n\n _this.adapter.notifyOpened();\n\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\n\n MDCSnackbarFoundation.prototype.close = function (reason) {\n var _this = this;\n\n if (reason === void 0) {\n reason = '';\n }\n\n if (!this.isOpen_) {\n // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed\n return;\n }\n\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n this.clearAutoDismissTimer_();\n this.isOpen_ = 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\n _this.adapter.notifyClosed(reason);\n }, numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS);\n };\n\n MDCSnackbarFoundation.prototype.isOpen = function () {\n return this.isOpen_;\n };\n\n MDCSnackbarFoundation.prototype.getTimeoutMs = function () {\n return this.autoDismissTimeoutMs_;\n };\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\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\n MDCSnackbarFoundation.prototype.getCloseOnEscape = function () {\n return this.closeOnEscape_;\n };\n\n MDCSnackbarFoundation.prototype.setCloseOnEscape = function (closeOnEscape) {\n this.closeOnEscape_ = closeOnEscape;\n };\n\n MDCSnackbarFoundation.prototype.handleKeyDown = function (evt) {\n var isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27;\n\n if (isEscapeKey && this.getCloseOnEscape()) {\n this.close(REASON_DISMISS);\n }\n };\n\n MDCSnackbarFoundation.prototype.handleActionButtonClick = function (_evt) {\n this.close(REASON_ACTION);\n };\n\n MDCSnackbarFoundation.prototype.handleActionIconClick = function (_evt) {\n this.close(REASON_DISMISS);\n };\n\n MDCSnackbarFoundation.prototype.clearAutoDismissTimer_ = function () {\n clearTimeout(this.autoDismissTimer_);\n this.autoDismissTimer_ = 0;\n };\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\n\n MDCSnackbarFoundation.prototype.runNextAnimationFrame_ = function (callback) {\n var _this = this;\n\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\n return MDCSnackbarFoundation;\n}(MDCFoundation);\n\nexport { MDCSnackbarFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\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;\n\nfunction announce(ariaEl, labelEl) {\n if (labelEl === void 0) {\n labelEl = ariaEl;\n }\n\n var priority = ariaEl.getAttribute('aria-live'); // Trim text to ignore ` ` (see below).\n // textContent is only null if the node is a document, DOCTYPE, or notation.\n\n var labelText = labelEl.textContent.trim();\n\n if (!labelText || !priority) {\n return;\n } // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n\n\n ariaEl.setAttribute('aria-live', 'off'); // 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\n labelEl.textContent = '';\n labelEl.innerHTML = ' '; // 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\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); // Remove the message from the ::before pseudo-element.\n\n labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR); // Restore the original label text, which will be announced by screen readers.\n\n labelEl.textContent = labelText;\n }, ARIA_LIVE_DELAY_MS);\n}\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;\n\nvar MDCSnackbar =\n/** @class */\nfunction (_super) {\n __extends(MDCSnackbar, _super);\n\n function MDCSnackbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCSnackbar.attachTo = function (root) {\n return new MDCSnackbar(root);\n };\n\n MDCSnackbar.prototype.initialize = function (announcerFactory) {\n if (announcerFactory === void 0) {\n announcerFactory = function () {\n return util.announce;\n };\n }\n\n this.announce_ = announcerFactory();\n };\n\n MDCSnackbar.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\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\n this.handleKeyDown_ = function (evt) {\n return _this.foundation.handleKeyDown(evt);\n };\n\n this.handleSurfaceClick_ = function (evt) {\n var target = evt.target;\n\n if (_this.isActionButton_(target)) {\n _this.foundation.handleActionButtonClick(evt);\n } else if (_this.isActionIcon_(target)) {\n _this.foundation.handleActionIconClick(evt);\n }\n };\n\n this.registerKeyDownHandler_(this.handleKeyDown_);\n this.registerSurfaceClickHandler_(this.handleSurfaceClick_);\n };\n\n MDCSnackbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this.deregisterKeyDownHandler_(this.handleKeyDown_);\n this.deregisterSurfaceClickHandler_(this.handleSurfaceClick_);\n };\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\n\n MDCSnackbar.prototype.close = function (reason) {\n if (reason === void 0) {\n reason = '';\n }\n\n this.foundation.close(reason);\n };\n\n MDCSnackbar.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n announce: function () {\n return _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\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: true,\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: true,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"isOpen\", {\n get: function () {\n return this.foundation.isOpen();\n },\n enumerable: true,\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, or notation.\n // 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: true,\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: true,\n configurable: true\n });\n\n MDCSnackbar.prototype.registerKeyDownHandler_ = function (handler) {\n this.listen('keydown', handler);\n };\n\n MDCSnackbar.prototype.deregisterKeyDownHandler_ = function (handler) {\n this.unlisten('keydown', handler);\n };\n\n MDCSnackbar.prototype.registerSurfaceClickHandler_ = function (handler) {\n this.surfaceEl_.addEventListener('click', handler);\n };\n\n MDCSnackbar.prototype.deregisterSurfaceClickHandler_ = function (handler) {\n this.surfaceEl_.removeEventListener('click', handler);\n };\n\n MDCSnackbar.prototype.isActionButton_ = function (target) {\n return Boolean(closest(target, ACTION_SELECTOR));\n };\n\n MDCSnackbar.prototype.isActionIcon_ = function (target) {\n return Boolean(closest(target, DISMISS_SELECTOR));\n };\n\n return MDCSnackbar;\n}(MDCComponent);\n\nexport { MDCSnackbar };","import {element_with_content, element_with_class} from 'utils/material_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()","/**\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\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';\nimport { getNormalizedEventCoords } from './util'; // Activation events registered on the root element of each instance for activation\n\nvar ACTIVATION_EVENT_TYPES = ['touchstart', 'pointerdown', 'mousedown', 'keydown']; // Deactivation events registered on documentElement when a pointer-related down event occurs\n\nvar POINTER_DEACTIVATION_EVENT_TYPES = ['touchend', 'pointerup', 'mouseup', 'contextmenu']; // simultaneous nested activations\n\nvar activatedTargets = [];\n\nvar MDCRippleFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCRippleFoundation, _super);\n\n function MDCRippleFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCRippleFoundation.defaultAdapter), adapter)) || this;\n\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\n _this.activationTimerCallback_ = function () {\n _this.activationAnimationHasEnded_ = true;\n\n _this.runDeactivationUXLogicIfReady_();\n };\n\n _this.activateHandler_ = function (e) {\n return _this.activate_(e);\n };\n\n _this.deactivateHandler_ = function () {\n return _this.deactivate_();\n };\n\n _this.focusHandler_ = function () {\n return _this.handleFocus();\n };\n\n _this.blurHandler_ = function () {\n return _this.handleBlur();\n };\n\n _this.resizeHandler_ = function () {\n return _this.layout();\n };\n\n return _this;\n }\n\n Object.defineProperty(MDCRippleFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCRippleFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: true,\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: true,\n configurable: true\n });\n\n MDCRippleFoundation.prototype.init = function () {\n var _this = this;\n\n var supportsPressRipple = this.supportsPressRipple_();\n this.registerRootHandlers_(supportsPressRipple);\n\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\n if (_this.adapter.isUnbounded()) {\n _this.adapter.addClass(UNBOUNDED_1); // Unbounded ripples need layout logic applied immediately to set coordinates for both shade and ripple\n\n\n _this.layoutInternal_();\n }\n });\n }\n };\n\n MDCRippleFoundation.prototype.destroy = function () {\n var _this = this;\n\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\n if (this.fgDeactivationRemovalTimer_) {\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.fgDeactivationRemovalTimer_ = 0;\n this.adapter.removeClass(MDCRippleFoundation.cssClasses.FG_DEACTIVATION);\n }\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\n _this.adapter.removeClass(UNBOUNDED_2);\n\n _this.removeCssVars_();\n });\n }\n\n this.deregisterRootHandlers_();\n this.deregisterDeactivationHandlers_();\n };\n /**\n * @param evt Optional event containing position information.\n */\n\n\n MDCRippleFoundation.prototype.activate = function (evt) {\n this.activate_(evt);\n };\n\n MDCRippleFoundation.prototype.deactivate = function () {\n this.deactivate_();\n };\n\n MDCRippleFoundation.prototype.layout = function () {\n var _this = this;\n\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this.layoutInternal_();\n\n _this.layoutFrame_ = 0;\n });\n };\n\n MDCRippleFoundation.prototype.setUnbounded = function (unbounded) {\n var UNBOUNDED = MDCRippleFoundation.cssClasses.UNBOUNDED;\n\n if (unbounded) {\n this.adapter.addClass(UNBOUNDED);\n } else {\n this.adapter.removeClass(UNBOUNDED);\n }\n };\n\n MDCRippleFoundation.prototype.handleFocus = function () {\n var _this = this;\n\n requestAnimationFrame(function () {\n return _this.adapter.addClass(MDCRippleFoundation.cssClasses.BG_FOCUSED);\n });\n };\n\n MDCRippleFoundation.prototype.handleBlur = function () {\n var _this = this;\n\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\n\n MDCRippleFoundation.prototype.supportsPressRipple_ = function () {\n return this.adapter.browserSupportsCssVars();\n };\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\n\n MDCRippleFoundation.prototype.registerRootHandlers_ = function (supportsPressRipple) {\n var _this = this;\n\n if (supportsPressRipple) {\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.registerInteractionHandler(evtType, _this.activateHandler_);\n });\n\n if (this.adapter.isUnbounded()) {\n this.adapter.registerResizeHandler(this.resizeHandler_);\n }\n }\n\n this.adapter.registerInteractionHandler('focus', this.focusHandler_);\n this.adapter.registerInteractionHandler('blur', this.blurHandler_);\n };\n\n MDCRippleFoundation.prototype.registerDeactivationHandlers_ = function (evt) {\n var _this = this;\n\n if (evt.type === 'keydown') {\n this.adapter.registerInteractionHandler('keyup', this.deactivateHandler_);\n } else {\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.registerDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n }\n };\n\n MDCRippleFoundation.prototype.deregisterRootHandlers_ = function () {\n var _this = this;\n\n ACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.deregisterInteractionHandler(evtType, _this.activateHandler_);\n });\n this.adapter.deregisterInteractionHandler('focus', this.focusHandler_);\n this.adapter.deregisterInteractionHandler('blur', this.blurHandler_);\n\n if (this.adapter.isUnbounded()) {\n this.adapter.deregisterResizeHandler(this.resizeHandler_);\n }\n };\n\n MDCRippleFoundation.prototype.deregisterDeactivationHandlers_ = function () {\n var _this = this;\n\n this.adapter.deregisterInteractionHandler('keyup', this.deactivateHandler_);\n POINTER_DEACTIVATION_EVENT_TYPES.forEach(function (evtType) {\n _this.adapter.deregisterDocumentInteractionHandler(evtType, _this.deactivateHandler_);\n });\n };\n\n MDCRippleFoundation.prototype.removeCssVars_ = function () {\n var _this = this;\n\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\n MDCRippleFoundation.prototype.activate_ = function (evt) {\n var _this = this;\n\n if (this.adapter.isSurfaceDisabled()) {\n return;\n }\n\n var activationState = this.activationState_;\n\n if (activationState.isActivated) {\n return;\n } // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction\n\n\n var previousActivationEvent = this.previousActivationEvent_;\n var isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type;\n\n if (isSameInteraction) {\n return;\n }\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\n if (hasActivatedChild) {\n // Immediately reset activation state, while preserving logic that prevents touch follow-on events\n this.resetActivationState_();\n return;\n }\n\n if (evt !== undefined) {\n activatedTargets.push(evt.target);\n this.registerDeactivationHandlers_(evt);\n }\n\n activationState.wasElementMadeActive = this.checkElementMadeActive_(evt);\n\n if (activationState.wasElementMadeActive) {\n this.animateActivation_();\n }\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\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\n if (activationState.wasElementMadeActive) {\n _this.animateActivation_();\n }\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\n MDCRippleFoundation.prototype.checkElementMadeActive_ = function (evt) {\n return evt !== undefined && evt.type === 'keydown' ? this.adapter.isSurfaceActive() : true;\n };\n\n MDCRippleFoundation.prototype.animateActivation_ = function () {\n var _this = this;\n\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\n if (!this.adapter.isUnbounded()) {\n var _c = this.getFgTranslationCoordinates_(),\n startPoint = _c.startPoint,\n endPoint = _c.endPoint;\n\n translateStart = startPoint.x + \"px, \" + startPoint.y + \"px\";\n translateEnd = endPoint.x + \"px, \" + endPoint.y + \"px\";\n }\n\n this.adapter.updateCssVariable(VAR_FG_TRANSLATE_START, translateStart);\n this.adapter.updateCssVariable(VAR_FG_TRANSLATE_END, translateEnd); // Cancel any ongoing activation/deactivation animations\n\n clearTimeout(this.activationTimer_);\n clearTimeout(this.fgDeactivationRemovalTimer_);\n this.rmBoundedActivationClasses_();\n this.adapter.removeClass(FG_DEACTIVATION); // Force layout in order to re-trigger the animation.\n\n this.adapter.computeBoundingRect();\n this.adapter.addClass(FG_ACTIVATION);\n this.activationTimer_ = setTimeout(function () {\n return _this.activationTimerCallback_();\n }, DEACTIVATION_TIMEOUT_MS);\n };\n\n MDCRippleFoundation.prototype.getFgTranslationCoordinates_ = function () {\n var _a = this.activationState_,\n activationEvent = _a.activationEvent,\n wasActivatedByPointer = _a.wasActivatedByPointer;\n var startPoint;\n\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 } // Center the element around the start point.\n\n\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\n MDCRippleFoundation.prototype.runDeactivationUXLogicIfReady_ = function () {\n var _this = this; // 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\n\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\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\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\n MDCRippleFoundation.prototype.resetActivationState_ = function () {\n var _this = this;\n\n this.previousActivationEvent_ = this.activationState_.activationEvent;\n this.activationState_ = this.defaultActivationState_(); // 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\n setTimeout(function () {\n return _this.previousActivationEvent_ = undefined;\n }, MDCRippleFoundation.numbers.TAP_DELAY_MS);\n };\n\n MDCRippleFoundation.prototype.deactivate_ = function () {\n var _this = this;\n\n var activationState = this.activationState_; // This can happen in scenarios such as when you have a keyup event that blurs the element.\n\n if (!activationState.isActivated) {\n return;\n }\n\n var state = __assign({}, activationState);\n\n if (activationState.isProgrammatic) {\n requestAnimationFrame(function () {\n return _this.animateDeactivation_(state);\n });\n this.resetActivationState_();\n } else {\n this.deregisterDeactivationHandlers_();\n requestAnimationFrame(function () {\n _this.activationState_.hasDeactivationUXRun = true;\n\n _this.animateDeactivation_(state);\n\n _this.resetActivationState_();\n });\n }\n };\n\n MDCRippleFoundation.prototype.animateDeactivation_ = function (_a) {\n var wasActivatedByPointer = _a.wasActivatedByPointer,\n wasElementMadeActive = _a.wasElementMadeActive;\n\n if (wasActivatedByPointer || wasElementMadeActive) {\n this.runDeactivationUXLogicIfReady_();\n }\n };\n\n MDCRippleFoundation.prototype.layoutInternal_ = function () {\n var _this = this;\n\n this.frame_ = this.adapter.computeBoundingRect();\n var maxDim = Math.max(this.frame_.height, this.frame_.width); // 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\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\n this.maxRadius_ = this.adapter.isUnbounded() ? maxDim : getBoundedRadius(); // Ripple is sized as a fraction of the largest dimension of the surface, then scales up using a CSS scale transform\n\n var initialSize = Math.floor(maxDim * MDCRippleFoundation.numbers.INITIAL_ORIGIN_SCALE); // Unbounded ripple size should always be even number to equally center align.\n\n if (this.adapter.isUnbounded() && initialSize % 2 !== 0) {\n this.initialSize_ = initialSize - 1;\n } else {\n this.initialSize_ = initialSize;\n }\n\n this.fgScale_ = \"\" + this.maxRadius_ / this.initialSize_;\n this.updateLayoutCssVars_();\n };\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\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\n return MDCRippleFoundation;\n}(MDCFoundation);\n\nexport { MDCRippleFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCRippleFoundation;","/**\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 CLOSING: 'mdc-dialog--closing',\n OPEN: 'mdc-dialog--open',\n OPENING: 'mdc-dialog--opening',\n SCROLLABLE: 'mdc-dialog--scrollable',\n SCROLL_LOCK: 'mdc-dialog-scroll-lock',\n STACKED: 'mdc-dialog--stacked'\n};\nexport var strings = {\n ACTION_ATTRIBUTE: 'data-mdc-dialog-action',\n BUTTON_DEFAULT_ATTRIBUTE: 'data-mdc-dialog-button-default',\n BUTTON_SELECTOR: '.mdc-dialog__button',\n CLOSED_EVENT: 'MDCDialog:closed',\n CLOSE_ACTION: 'close',\n CLOSING_EVENT: 'MDCDialog:closing',\n CONTAINER_SELECTOR: '.mdc-dialog__container',\n CONTENT_SELECTOR: '.mdc-dialog__content',\n DESTROY_ACTION: 'destroy',\n INITIAL_FOCUS_ATTRIBUTE: 'data-mdc-dialog-initial-focus',\n OPENED_EVENT: 'MDCDialog:opened',\n OPENING_EVENT: 'MDCDialog:opening',\n SCRIM_SELECTOR: '.mdc-dialog__scrim',\n SUPPRESS_DEFAULT_PRESS_SELECTOR: ['textarea', '.mdc-menu .mdc-list-item'].join(', '),\n SURFACE_SELECTOR: '.mdc-dialog__surface'\n};\nexport var numbers = {\n DIALOG_ANIMATION_CLOSE_TIME_MS: 75,\n DIALOG_ANIMATION_OPEN_TIME_MS: 150\n};","/**\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';\n\nvar MDCDialogFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCDialogFoundation, _super);\n\n function MDCDialogFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCDialogFoundation.defaultAdapter), adapter)) || this;\n\n _this.isOpen_ = false;\n _this.animationFrame_ = 0;\n _this.animationTimer_ = 0;\n _this.layoutFrame_ = 0;\n _this.escapeKeyAction_ = strings.CLOSE_ACTION;\n _this.scrimClickAction_ = strings.CLOSE_ACTION;\n _this.autoStackButtons_ = true;\n _this.areButtonsStacked_ = false;\n return _this;\n }\n\n Object.defineProperty(MDCDialogFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialogFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addBodyClass: function () {\n return undefined;\n },\n addClass: function () {\n return undefined;\n },\n areButtonsStacked: function () {\n return false;\n },\n clickDefaultButton: function () {\n return undefined;\n },\n eventTargetMatches: function () {\n return false;\n },\n getActionFromEvent: function () {\n return '';\n },\n getInitialFocusEl: function () {\n return null;\n },\n hasClass: function () {\n return false;\n },\n isContentScrollable: function () {\n return false;\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 releaseFocus: function () {\n return undefined;\n },\n removeBodyClass: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n reverseButtons: function () {\n return undefined;\n },\n trapFocus: function () {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n\n MDCDialogFoundation.prototype.init = function () {\n if (this.adapter.hasClass(cssClasses.STACKED)) {\n this.setAutoStackButtons(false);\n }\n };\n\n MDCDialogFoundation.prototype.destroy = function () {\n if (this.isOpen_) {\n this.close(strings.DESTROY_ACTION);\n }\n\n if (this.animationTimer_) {\n clearTimeout(this.animationTimer_);\n this.handleAnimationTimerEnd_();\n }\n\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n this.layoutFrame_ = 0;\n }\n };\n\n MDCDialogFoundation.prototype.open = function () {\n var _this = this;\n\n this.isOpen_ = true;\n this.adapter.notifyOpening();\n this.adapter.addClass(cssClasses.OPENING); // Wait a frame once display is no longer \"none\", to establish basis for animation\n\n this.runNextAnimationFrame_(function () {\n _this.adapter.addClass(cssClasses.OPEN);\n\n _this.adapter.addBodyClass(cssClasses.SCROLL_LOCK);\n\n _this.layout();\n\n _this.animationTimer_ = setTimeout(function () {\n _this.handleAnimationTimerEnd_();\n\n _this.adapter.trapFocus(_this.adapter.getInitialFocusEl());\n\n _this.adapter.notifyOpened();\n }, numbers.DIALOG_ANIMATION_OPEN_TIME_MS);\n });\n };\n\n MDCDialogFoundation.prototype.close = function (action) {\n var _this = this;\n\n if (action === void 0) {\n action = '';\n }\n\n if (!this.isOpen_) {\n // Avoid redundant close calls (and events), e.g. from keydown on elements that inherently emit click\n return;\n }\n\n this.isOpen_ = false;\n this.adapter.notifyClosing(action);\n this.adapter.addClass(cssClasses.CLOSING);\n this.adapter.removeClass(cssClasses.OPEN);\n this.adapter.removeBodyClass(cssClasses.SCROLL_LOCK);\n cancelAnimationFrame(this.animationFrame_);\n this.animationFrame_ = 0;\n clearTimeout(this.animationTimer_);\n this.animationTimer_ = setTimeout(function () {\n _this.adapter.releaseFocus();\n\n _this.handleAnimationTimerEnd_();\n\n _this.adapter.notifyClosed(action);\n }, numbers.DIALOG_ANIMATION_CLOSE_TIME_MS);\n };\n\n MDCDialogFoundation.prototype.isOpen = function () {\n return this.isOpen_;\n };\n\n MDCDialogFoundation.prototype.getEscapeKeyAction = function () {\n return this.escapeKeyAction_;\n };\n\n MDCDialogFoundation.prototype.setEscapeKeyAction = function (action) {\n this.escapeKeyAction_ = action;\n };\n\n MDCDialogFoundation.prototype.getScrimClickAction = function () {\n return this.scrimClickAction_;\n };\n\n MDCDialogFoundation.prototype.setScrimClickAction = function (action) {\n this.scrimClickAction_ = action;\n };\n\n MDCDialogFoundation.prototype.getAutoStackButtons = function () {\n return this.autoStackButtons_;\n };\n\n MDCDialogFoundation.prototype.setAutoStackButtons = function (autoStack) {\n this.autoStackButtons_ = autoStack;\n };\n\n MDCDialogFoundation.prototype.layout = function () {\n var _this = this;\n\n if (this.layoutFrame_) {\n cancelAnimationFrame(this.layoutFrame_);\n }\n\n this.layoutFrame_ = requestAnimationFrame(function () {\n _this.layoutInternal_();\n\n _this.layoutFrame_ = 0;\n });\n };\n /** Handles click on the dialog root element. */\n\n\n MDCDialogFoundation.prototype.handleClick = function (evt) {\n var isScrim = this.adapter.eventTargetMatches(evt.target, strings.SCRIM_SELECTOR); // Check for scrim click first since it doesn't require querying ancestors.\n\n if (isScrim && this.scrimClickAction_ !== '') {\n this.close(this.scrimClickAction_);\n } else {\n var action = this.adapter.getActionFromEvent(evt);\n\n if (action) {\n this.close(action);\n }\n }\n };\n /** Handles keydown on the dialog root element. */\n\n\n MDCDialogFoundation.prototype.handleKeydown = function (evt) {\n var isEnter = evt.key === 'Enter' || evt.keyCode === 13;\n\n if (!isEnter) {\n return;\n }\n\n var action = this.adapter.getActionFromEvent(evt);\n\n if (action) {\n // Action button callback is handled in `handleClick`,\n // since space/enter keydowns on buttons trigger click events.\n return;\n }\n\n var isDefault = !this.adapter.eventTargetMatches(evt.target, strings.SUPPRESS_DEFAULT_PRESS_SELECTOR);\n\n if (isEnter && isDefault) {\n this.adapter.clickDefaultButton();\n }\n };\n /** Handles keydown on the document. */\n\n\n MDCDialogFoundation.prototype.handleDocumentKeydown = function (evt) {\n var isEscape = evt.key === 'Escape' || evt.keyCode === 27;\n\n if (isEscape && this.escapeKeyAction_ !== '') {\n this.close(this.escapeKeyAction_);\n }\n };\n\n MDCDialogFoundation.prototype.layoutInternal_ = function () {\n if (this.autoStackButtons_) {\n this.detectStackedButtons_();\n }\n\n this.detectScrollableContent_();\n };\n\n MDCDialogFoundation.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\n\n MDCDialogFoundation.prototype.runNextAnimationFrame_ = function (callback) {\n var _this = this;\n\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\n MDCDialogFoundation.prototype.detectStackedButtons_ = function () {\n // Remove the class first to let us measure the buttons' natural positions.\n this.adapter.removeClass(cssClasses.STACKED);\n var areButtonsStacked = this.adapter.areButtonsStacked();\n\n if (areButtonsStacked) {\n this.adapter.addClass(cssClasses.STACKED);\n }\n\n if (areButtonsStacked !== this.areButtonsStacked_) {\n this.adapter.reverseButtons();\n this.areButtonsStacked_ = areButtonsStacked;\n }\n };\n\n MDCDialogFoundation.prototype.detectScrollableContent_ = function () {\n // Remove the class first to let us measure the natural height of the content.\n this.adapter.removeClass(cssClasses.SCROLLABLE);\n\n if (this.adapter.isContentScrollable()) {\n this.adapter.addClass(cssClasses.SCROLLABLE);\n }\n };\n\n return MDCDialogFoundation;\n}(MDCFoundation);\n\nexport { MDCDialogFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCDialogFoundation;","/**\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, __values } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { FocusTrap } from '@material/dom/focus-trap';\nimport { closest, matches } from '@material/dom/ponyfill';\nimport { MDCRipple } from '@material/ripple/component';\nimport { MDCDialogFoundation } from './foundation';\nimport * as util from './util';\nvar strings = MDCDialogFoundation.strings;\n\nvar MDCDialog =\n/** @class */\nfunction (_super) {\n __extends(MDCDialog, _super);\n\n function MDCDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(MDCDialog.prototype, \"isOpen\", {\n get: function () {\n return this.foundation.isOpen();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"escapeKeyAction\", {\n get: function () {\n return this.foundation.getEscapeKeyAction();\n },\n set: function (action) {\n this.foundation.setEscapeKeyAction(action);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"scrimClickAction\", {\n get: function () {\n return this.foundation.getScrimClickAction();\n },\n set: function (action) {\n this.foundation.setScrimClickAction(action);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCDialog.prototype, \"autoStackButtons\", {\n get: function () {\n return this.foundation.getAutoStackButtons();\n },\n set: function (autoStack) {\n this.foundation.setAutoStackButtons(autoStack);\n },\n enumerable: true,\n configurable: true\n });\n\n MDCDialog.attachTo = function (root) {\n return new MDCDialog(root);\n };\n\n MDCDialog.prototype.initialize = function (focusTrapFactory) {\n var e_1, _a;\n\n if (focusTrapFactory === void 0) {\n focusTrapFactory = function (el, focusOptions) {\n return new FocusTrap(el, focusOptions);\n };\n }\n\n var container = this.root.querySelector(strings.CONTAINER_SELECTOR);\n\n if (!container) {\n throw new Error(\"Dialog component requires a \" + strings.CONTAINER_SELECTOR + \" container element\");\n }\n\n this.container_ = container;\n this.content_ = this.root.querySelector(strings.CONTENT_SELECTOR);\n this.buttons_ = [].slice.call(this.root.querySelectorAll(strings.BUTTON_SELECTOR));\n this.defaultButton_ = this.root.querySelector(\"[\" + strings.BUTTON_DEFAULT_ATTRIBUTE + \"]\");\n this.focusTrapFactory_ = focusTrapFactory;\n this.buttonRipples_ = [];\n\n try {\n for (var _b = __values(this.buttons_), _c = _b.next(); !_c.done; _c = _b.next()) {\n var buttonEl = _c.value;\n this.buttonRipples_.push(new MDCRipple(buttonEl));\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n\n MDCDialog.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.focusTrap_ = util.createFocusTrapInstance(this.container_, this.focusTrapFactory_, this.getInitialFocusEl_() || undefined);\n this.handleClick_ = this.foundation.handleClick.bind(this.foundation);\n this.handleKeydown_ = this.foundation.handleKeydown.bind(this.foundation);\n this.handleDocumentKeydown_ = this.foundation.handleDocumentKeydown.bind(this.foundation);\n this.handleLayout_ = this.layout.bind(this);\n var LAYOUT_EVENTS = ['resize', 'orientationchange'];\n\n this.handleOpening_ = function () {\n LAYOUT_EVENTS.forEach(function (evtType) {\n return window.addEventListener(evtType, _this.handleLayout_);\n });\n document.addEventListener('keydown', _this.handleDocumentKeydown_);\n };\n\n this.handleClosing_ = function () {\n LAYOUT_EVENTS.forEach(function (evtType) {\n return window.removeEventListener(evtType, _this.handleLayout_);\n });\n document.removeEventListener('keydown', _this.handleDocumentKeydown_);\n };\n\n this.listen('click', this.handleClick_);\n this.listen('keydown', this.handleKeydown_);\n this.listen(strings.OPENING_EVENT, this.handleOpening_);\n this.listen(strings.CLOSING_EVENT, this.handleClosing_);\n };\n\n MDCDialog.prototype.destroy = function () {\n this.unlisten('click', this.handleClick_);\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten(strings.OPENING_EVENT, this.handleOpening_);\n this.unlisten(strings.CLOSING_EVENT, this.handleClosing_);\n this.handleClosing_();\n this.buttonRipples_.forEach(function (ripple) {\n return ripple.destroy();\n });\n\n _super.prototype.destroy.call(this);\n };\n\n MDCDialog.prototype.layout = function () {\n this.foundation.layout();\n };\n\n MDCDialog.prototype.open = function () {\n this.foundation.open();\n };\n\n MDCDialog.prototype.close = function (action) {\n if (action === void 0) {\n action = '';\n }\n\n this.foundation.close(action);\n };\n\n MDCDialog.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\n var adapter = {\n addBodyClass: function (className) {\n return document.body.classList.add(className);\n },\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n areButtonsStacked: function () {\n return util.areTopsMisaligned(_this.buttons_);\n },\n clickDefaultButton: function () {\n return _this.defaultButton_ && _this.defaultButton_.click();\n },\n eventTargetMatches: function (target, selector) {\n return target ? matches(target, selector) : false;\n },\n getActionFromEvent: function (evt) {\n if (!evt.target) {\n return '';\n }\n\n var element = closest(evt.target, \"[\" + strings.ACTION_ATTRIBUTE + \"]\");\n return element && element.getAttribute(strings.ACTION_ATTRIBUTE);\n },\n getInitialFocusEl: function () {\n return _this.getInitialFocusEl_();\n },\n hasClass: function (className) {\n return _this.root.classList.contains(className);\n },\n isContentScrollable: function () {\n return util.isScrollable(_this.content_);\n },\n notifyClosed: function (action) {\n return _this.emit(strings.CLOSED_EVENT, action ? {\n action: action\n } : {});\n },\n notifyClosing: function (action) {\n return _this.emit(strings.CLOSING_EVENT, action ? {\n action: action\n } : {});\n },\n notifyOpened: function () {\n return _this.emit(strings.OPENED_EVENT, {});\n },\n notifyOpening: function () {\n return _this.emit(strings.OPENING_EVENT, {});\n },\n releaseFocus: function () {\n return _this.focusTrap_.releaseFocus();\n },\n removeBodyClass: function (className) {\n return document.body.classList.remove(className);\n },\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n },\n reverseButtons: function () {\n _this.buttons_.reverse();\n\n _this.buttons_.forEach(function (button) {\n button.parentElement.appendChild(button);\n });\n },\n trapFocus: function () {\n return _this.focusTrap_.trapFocus();\n }\n };\n return new MDCDialogFoundation(adapter);\n };\n\n MDCDialog.prototype.getInitialFocusEl_ = function () {\n return document.querySelector(\"[\" + strings.INITIAL_FOCUS_ATTRIBUTE + \"]\");\n };\n\n return MDCDialog;\n}(MDCComponent);\n\nexport { MDCDialog };","/**\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 function createFocusTrapInstance(surfaceEl, focusTrapFactory, initialFocusEl) {\n return focusTrapFactory(surfaceEl, {\n initialFocusEl: initialFocusEl\n });\n}\nexport function isScrollable(el) {\n return el ? el.scrollHeight > el.offsetHeight : false;\n}\nexport function areTopsMisaligned(els) {\n var tops = new Set();\n [].forEach.call(els, function (el) {\n return tops.add(el.offsetTop);\n });\n return tops.size > 1;\n}","import {element_with_class, element_with_content} from 'utils/material_elements'\nimport {MDCDialog} from '@material/dialog'\n\nexport class PopupMessage\n\n @alert: (message) ->\n @addAndShowDialog @alertDialog(message)\n\n @confirm: (title, message) ->\n @addAndShowDialog @confirmDialog(title, message)\n\n @showPopup: (content, buttons...) ->\n @addAndShowDialog @buildSurface(content, buttons...)\n\n @addAndShowDialog: (div) ->\n document.body.append div\n @dialog = new MDCDialog(div)\n @dialog.open()\n @dialog\n\n @buildSurface: (content, buttons...) ->\n surface = @surface()\n surface.append element_with_content('div', content, 'mdc-dialog__content', 'dialog-with-icons', 'mdc-menu-surface--anchor')\n if buttons.length > 0\n surface.append @buttonPanel(buttons...)\n else\n surface.append @closeButtonPanel()\n @buildDialog surface\n\n @alertDialog: (message) ->\n surface = @surface()\n surface.append element_with_content('div', message, 'mdc-dialog__content')\n surface.append @okButtonPanel()\n @buildDialog surface\n\n @confirmDialog: (title, message) ->\n surface = @surface()\n surface.append element_with_content('h2', title, 'mdc-dialog__title') \n surface.append element_with_content('div', message, 'mdc-dialog__content')\n surface.append @yesCancelButtonPanel()\n @buildDialog surface\n\n @buildDialog: (surface) ->\n div = element_with_class('div', 'mdc-dialog')\n container = element_with_class('div', 'mdc-dialog__container')\n container.append surface\n div.append container\n div.append element_with_class('div', 'mdc-dialog__scrim')\n div\n\n @surface: ->\n surface = element_with_class('div', 'mdc-dialog__surface')\n surface.setAttribute('role', 'alertdialog')\n surface.setAttribute('aria-modal', 'true')\n surface\n\n @closeIcon: ->\n icon = element_with_content('div', '', 'material-icons', 'close-icon')\n icon.addEventListener 'click', => @dialog.close()\n element_with_content('div', icon, 'icon-bar')\n\n @yesCancelButtonPanel: -> @buttonPanel @cancelButton(), @yesButton()\n @okButtonPanel: -> @buttonPanel @okButton()\n @closeButtonPanel: -> @buttonPanel @closeButton()\n\n @buttonPanel: (buttons...) ->\n null if buttons.length > 0\n div = element_with_class('div', 'mdc-dialog__actions')\n div.append(button) for button in buttons\n div\n\n @yesButton: -> @button('Yes', 'accept')\n @cancelButton: -> @button('Cancel', 'close')\n @okButton: -> @button('OK', 'close')\n @closeButton: -> @button('Close', 'close')\n\n @button: (label, action, is_default) ->\n button = element_with_class('button', 'mdc-button', 'mdc-dialog__button')\n button.dataset.mdcDialogButtonDefault = true if is_default\n button.append element_with_class('div', 'mdc-button__ripple')\n button.append element_with_content('div', label, 'mdc-button__label')\n button.dataset.mdcDialogAction = action\n button","export class EmojiFallback\n\n constructor: ->\n @prepare_string()\n\n run: ->\n @replace_emojis() unless @emoji_support()\n\n tree_walker: ->\n nodes = ['A', 'LI', 'TD', 'SPAN']\n document.createTreeWalker document.body, NodeFilter.SHOW_TEXT, ((node) ->\n return NodeFilter.FILTER_SKIP unless node.parentNode?\n return NodeFilter.FILTER_REJECT unless nodes.indexOf(node.parentNode.nodeName.toUpperCase()) >= 0\n return NodeFilter.FILTER_SKIP if String.prototype.trim && !node.nodeValue.trim().length\n return NodeFilter.FILTER_ACCEPT), false\n\n text_nodes: ->\n nodes = []\n walker = @tree_walker()\n nodes.push(walker.currentNode) while walker.nextNode()\n nodes\n\n emoji_support: ->\n return false unless document.createElement('canvas').getContext\n context = document.createElement('canvas').getContext('2d')\n return false unless typeof context.fillText == 'function'\n flag = String.fromCodePoint(0x1F1F3) + String.fromCodePoint(0x1F1FF);\n context.textBaseline = \"top\"\n context.font = \"32px Arial\"\n context.fillText(flag, 0, 0)\n context.getImageData(16, 16, 1, 1).data[0] != 0\n\n codePoint: (point) ->\n offset = point - 0x10000\n units = if point > 0xFFFF then [0xD800 + (offset >> 10), 0xDC00 + (offset & 0x3FF)] else [point]\n String.fromCharCode.apply(null, units)\n\n surrogatePairToCodepoint: (lead, trail) -> (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000 \n\n getImageForCodepoint: (hex) ->\n img = document.createElement('IMG')\n img.style.verticalAlign = \"top\"\n img.classList.add 'emoji-flag'\n img.src = \"//cdn.dividendmax.com/flags/#{hex}.png\"\n img\n\n fragmentForString: (htmlString) ->\n tmpDoc = document.createElement('DIV')\n fragment = document.createDocumentFragment()\n\n tmpDoc.innerHTML = htmlString\n fragment.appendChild(childNode) while childNode = tmpDoc.firstChild\n fragment\n\n replace_in_node: (node) ->\n pattern = /([\\ud800-\\udbff])([\\udc00-\\udfff])([\\ud800-\\udbff])([\\udc00-\\udfff])/g\n value = node.nodeValue\n if value.match(pattern)\n replacement = @imageReplacement(value, pattern)\n node.parentNode.replaceChild(@fragmentForString(replacement), node)\n\n replaceInElement: (element) ->\n return if @emoji_support()\n pattern = /([\\ud800-\\udbff])([\\udc00-\\udfff])([\\ud800-\\udbff])([\\udc00-\\udfff])/g\n value = element.innerHTML\n if value.match(pattern)\n replacement = @imageReplacement(value, pattern)\n element.innerHTML = replacement\n\n imageReplacement: (value, pattern) ->\n value.replace pattern, (match, p1, p2, p3, p4) =>\n point1 = @surrogatePairToCodepoint(p1.charCodeAt(0), p2.charCodeAt(0))\n point2 = @surrogatePairToCodepoint(p3.charCodeAt(0), p4.charCodeAt(0))\n img = @getImageForCodepoint(point1.toString(16) + point2.toString(16))\n img.outerHTML\n\n prepare_string: ->\n unless String.fromCodePoint?\n String.fromCodePoint = =>\n chars = []\n chars.push(@codePoint(point)) for point in arguments\n chars.join(\"\")\n\n replace_emojis: ->\n @replace_in_node(node) for node in @text_nodes()\n\n\nexport apply = ->\n emoji = new EmojiFallback()\n emoji.run()","/**\n * @license\n * Copyright 2020 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 ELEMENTS_KEY_ALLOWED_IN = ['input', 'button', 'textarea', 'select'];\n/**\n * Ensures that preventDefault is only called if the containing element\n * doesn't consume the event, and it will cause an unintended scroll.\n *\n * @param evt keyboard event to be prevented.\n */\n\nexport var preventDefaultEvent = function (evt) {\n var target = evt.target;\n\n if (!target) {\n return;\n }\n\n var tagName = (\"\" + target.tagName).toLowerCase();\n\n if (ELEMENTS_KEY_ALLOWED_IN.indexOf(tagName) === -1) {\n evt.preventDefault();\n }\n};","/**\n * @license\n * Copyright 2020 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 { normalizeKey } from '@material/dom/keyboard';\nimport { numbers } from './constants';\nimport { preventDefaultEvent } from './events';\n/**\n * Initializes a state object for typeahead. Use the same reference for calls to\n * typeahead functions.\n *\n * @return The current state of the typeahead process. Each state reference\n * represents a typeahead instance as the reference is typically mutated\n * in-place.\n */\n\nexport function initState() {\n var state = {\n bufferClearTimeout: 0,\n currentFirstChar: '',\n sortedIndexCursor: 0,\n typeaheadBuffer: ''\n };\n return state;\n}\n/**\n * Initializes typeahead state by indexing the current list items by primary\n * text into the sortedIndexByFirstChar data structure.\n *\n * @param listItemCount numer of items in the list\n * @param getPrimaryTextByItemIndex function that returns the primary text at a\n * given index\n *\n * @return Map that maps the first character of the primary text to the full\n * list text and it's index\n */\n\nexport function initSortedIndex(listItemCount, getPrimaryTextByItemIndex) {\n var sortedIndexByFirstChar = new Map(); // Aggregate item text to index mapping\n\n for (var i = 0; i < listItemCount; i++) {\n var primaryText = getPrimaryTextByItemIndex(i).trim();\n\n if (!primaryText) {\n continue;\n }\n\n var firstChar = primaryText[0].toLowerCase();\n\n if (!sortedIndexByFirstChar.has(firstChar)) {\n sortedIndexByFirstChar.set(firstChar, []);\n }\n\n sortedIndexByFirstChar.get(firstChar).push({\n text: primaryText.toLowerCase(),\n index: i\n });\n } // Sort the mapping\n // TODO(b/157162694): Investigate replacing forEach with Map.values()\n\n\n sortedIndexByFirstChar.forEach(function (values) {\n values.sort(function (first, second) {\n return first.index - second.index;\n });\n });\n return sortedIndexByFirstChar;\n}\n/**\n * Given the next desired character from the user, it attempts to find the next\n * list option matching the buffer. Wraps around if at the end of options.\n *\n * @param opts Options and accessors\n * - nextChar - the next character to match against items\n * - sortedIndexByFirstChar - output of `initSortedIndex(...)`\n * - focusedItemIndex - the index of the currently focused item\n * - focusItemAtIndex - function that focuses a list item at given index\n * - skipFocus - whether or not to focus the matched item\n * - isItemAtIndexDisabled - function that determines whether an item at a\n * given index is disabled\n * @param state The typeahead state instance. See `initState`.\n *\n * @return The index of the matched item, or -1 if no match.\n */\n\nexport function matchItem(opts, state) {\n var nextChar = opts.nextChar,\n focusItemAtIndex = opts.focusItemAtIndex,\n sortedIndexByFirstChar = opts.sortedIndexByFirstChar,\n focusedItemIndex = opts.focusedItemIndex,\n skipFocus = opts.skipFocus,\n isItemAtIndexDisabled = opts.isItemAtIndexDisabled;\n clearTimeout(state.bufferClearTimeout);\n state.bufferClearTimeout = setTimeout(function () {\n clearBuffer(state);\n }, numbers.TYPEAHEAD_BUFFER_CLEAR_TIMEOUT_MS);\n state.typeaheadBuffer = state.typeaheadBuffer + nextChar;\n var index;\n\n if (state.typeaheadBuffer.length === 1) {\n index = matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state);\n } else {\n index = matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state);\n }\n\n if (index !== -1 && !skipFocus) {\n focusItemAtIndex(index);\n }\n\n return index;\n}\n/**\n * Matches the user's single input character in the buffer to the\n * next option that begins with such character. Wraps around if at\n * end of options. Returns -1 if no match is found.\n */\n\nfunction matchFirstChar(sortedIndexByFirstChar, focusedItemIndex, isItemAtIndexDisabled, state) {\n var firstChar = state.typeaheadBuffer[0];\n var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);\n\n if (!itemsMatchingFirstChar) {\n return -1;\n } // Has the same firstChar been recently matched?\n // Also, did starting index remain the same between key presses?\n // If both hold true, simply increment index.\n\n\n if (firstChar === state.currentFirstChar && itemsMatchingFirstChar[state.sortedIndexCursor].index === focusedItemIndex) {\n state.sortedIndexCursor = (state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;\n var newIndex = itemsMatchingFirstChar[state.sortedIndexCursor].index;\n\n if (!isItemAtIndexDisabled(newIndex)) {\n return newIndex;\n }\n } // If we're here, it means one of the following happened:\n // - either firstChar or startingIndex has changed, invalidating the\n // cursor.\n // - The next item of typeahead is disabled, so we have to look further.\n\n\n state.currentFirstChar = firstChar;\n var newCursorPosition = -1;\n var cursorPosition; // Find the first non-disabled item as a fallback.\n\n for (cursorPosition = 0; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {\n if (!isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {\n newCursorPosition = cursorPosition;\n break;\n }\n } // Advance cursor to first item matching the firstChar that is positioned\n // after starting item. Cursor is unchanged from fallback if there's no\n // such item.\n\n\n for (; cursorPosition < itemsMatchingFirstChar.length; cursorPosition++) {\n if (itemsMatchingFirstChar[cursorPosition].index > focusedItemIndex && !isItemAtIndexDisabled(itemsMatchingFirstChar[cursorPosition].index)) {\n newCursorPosition = cursorPosition;\n break;\n }\n }\n\n if (newCursorPosition !== -1) {\n state.sortedIndexCursor = newCursorPosition;\n return itemsMatchingFirstChar[state.sortedIndexCursor].index;\n }\n\n return -1;\n}\n/**\n * Attempts to find the next item that matches all of the typeahead buffer.\n * Wraps around if at end of options. Returns -1 if no match is found.\n */\n\n\nfunction matchAllChars(sortedIndexByFirstChar, isItemAtIndexDisabled, state) {\n var firstChar = state.typeaheadBuffer[0];\n var itemsMatchingFirstChar = sortedIndexByFirstChar.get(firstChar);\n\n if (!itemsMatchingFirstChar) {\n return -1;\n } // Do nothing if text already matches\n\n\n var startingItem = itemsMatchingFirstChar[state.sortedIndexCursor];\n\n if (startingItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0 && !isItemAtIndexDisabled(startingItem.index)) {\n return startingItem.index;\n } // Find next item that matches completely; if no match, we'll eventually\n // loop around to same position\n\n\n var cursorPosition = (state.sortedIndexCursor + 1) % itemsMatchingFirstChar.length;\n var nextCursorPosition = -1;\n\n while (cursorPosition !== state.sortedIndexCursor) {\n var currentItem = itemsMatchingFirstChar[cursorPosition];\n var matches = currentItem.text.lastIndexOf(state.typeaheadBuffer, 0) === 0;\n var isEnabled = !isItemAtIndexDisabled(currentItem.index);\n\n if (matches && isEnabled) {\n nextCursorPosition = cursorPosition;\n break;\n }\n\n cursorPosition = (cursorPosition + 1) % itemsMatchingFirstChar.length;\n }\n\n if (nextCursorPosition !== -1) {\n state.sortedIndexCursor = nextCursorPosition;\n return itemsMatchingFirstChar[state.sortedIndexCursor].index;\n }\n\n return -1;\n}\n/**\n * Whether or not the given typeahead instaance state is currently typing.\n *\n * @param state The typeahead state instance. See `initState`.\n */\n\n\nexport function isTypingInProgress(state) {\n return state.typeaheadBuffer.length > 0;\n}\n/**\n * Clears the typeahaed buffer so that it resets item matching to the first\n * character.\n *\n * @param state The typeahead state instance. See `initState`.\n */\n\nexport function clearBuffer(state) {\n state.typeaheadBuffer = '';\n}\n/**\n * Given a keydown event, it calculates whether or not to automatically focus a\n * list item depending on what was typed mimicing the typeahead functionality of\n * a standard ' + ' ' + ' ' + '';\n return template(source, context);\n };\n /***/\n\n },\n /* 38 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /**\n * @fileoverview Selectbox (in TimePicker)\n * @author NHN. FE Development Lab \n */\n\n var inArray = __webpack_require__(0);\n\n var CustomEvents = __webpack_require__(8);\n\n var defineClass = __webpack_require__(9);\n\n var extend = __webpack_require__(1);\n\n var on = __webpack_require__(10);\n\n var off = __webpack_require__(11);\n\n var closest = __webpack_require__(12);\n\n var removeElement = __webpack_require__(13);\n\n var isHTMLNode = __webpack_require__(14);\n\n var util = __webpack_require__(15);\n\n var tmpl = __webpack_require__(39);\n /**\n * @class\n * @ignore\n * @param {string|HTMLElement} container - Container element or selector\n * @param {object} options - Options\n * @param {Array.} options.items - Items\n * @param {number} options.initialValue - Initial value\n */\n\n\n var Selectbox = defineClass(\n /** @lends Selectbox.prototype */\n {\n init: function (container, options) {\n options = extend({\n items: []\n }, options);\n /**\n * Container element\n * @type {HTMLElement}\n * @private\n */\n\n this._container = isHTMLNode(container) ? container : document.querySelector(container);\n /**\n * Selectbox items\n * @type {Array.}\n * @private\n */\n\n this._items = options.items || [];\n /**\n * Selectbox disabled items info\n * @type {Array.}\n * @private\n */\n\n this._disabledItems = options.disabledItems || [];\n /**\n * Selected index\n * @type {number}\n * @private\n */\n\n this._selectedIndex = Math.max(0, inArray(options.initialValue, this._items));\n /**\n * Time format for output\n * @type {string}\n * @private\n */\n\n this._format = options.format;\n /**\n * Select element\n * @type {HTMLElement}\n * @private\n */\n\n this._element = null;\n\n this._render();\n\n this._setEvents();\n },\n\n /**\n * Render selectbox\n * @private\n */\n _render: function () {\n var context;\n\n this._changeEnabledIndex();\n\n context = {\n items: this._items,\n format: this._format,\n initialValue: this.getValue(),\n disabledItems: this._disabledItems,\n formatTime: util.formatTime,\n equals: function (a, b) {\n return a === b;\n }\n };\n\n if (this._element) {\n this._removeElement();\n }\n\n this._container.innerHTML = tmpl(context);\n this._element = this._container.firstChild;\n on(this._element, 'change', this._onChangeHandler, this);\n },\n\n /**\n * Change the index of the enabled item\n * @private\n */\n _changeEnabledIndex: function () {\n var index = inArray(this.getValue(), this._items);\n\n if (this._disabledItems[index]) {\n this._selectedIndex = inArray(false, this._disabledItems);\n }\n },\n\n /**\n * Set disabledItems\n * @param {object} disabledItems - disabled status of items\n * @private\n */\n setDisabledItems: function (disabledItems) {\n this._disabledItems = disabledItems;\n\n this._render();\n },\n\n /**\n * Set events\n * @private\n */\n _setEvents: function () {\n this.on('changeItems', function (items) {\n this._items = items;\n\n this._render();\n }, this);\n },\n\n /**\n * Remove events\n * @private\n */\n _removeEvents: function () {\n this.off();\n },\n\n /**\n * Remove element\n * @private\n */\n _removeElement: function () {\n off(this._element, 'change', this._onChangeHandler, this);\n removeElement(this._element);\n },\n\n /**\n * Change event handler\n * @param {Event} ev Change event on a select element.\n * @private\n */\n _onChangeHandler: function (ev) {\n if (closest(util.getTarget(ev), 'select')) {\n this._setNewValue();\n }\n },\n\n /**\n * Set new value\n * @private\n */\n _setNewValue: function () {\n var newValue = Number(this._element.value);\n this._selectedIndex = inArray(newValue, this._items);\n this.fire('change', {\n value: newValue\n });\n },\n\n /**\n * Returns current value\n * @returns {number}\n */\n getValue: function () {\n return this._items[this._selectedIndex];\n },\n\n /**\n * Set value\n * @param {number} value - New value\n */\n setValue: function (value) {\n var newIndex = inArray(value, this._items);\n\n if (newIndex > -1 && newIndex !== this._selectedIndex) {\n this._selectedIndex = newIndex;\n this._element.value = value;\n\n this._setNewValue();\n }\n },\n\n /**\n * Destory\n */\n destroy: function () {\n this._removeEvents();\n\n this._removeElement();\n\n this._container = this._items = this._selectedIndex = this._element = null;\n }\n });\n CustomEvents.mixin(Selectbox);\n module.exports = Selectbox;\n /***/\n },\n /* 39 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var template = __webpack_require__(7);\n\n module.exports = function (context) {\n var source = '';\n return template(source, context);\n };\n /***/\n\n },\n /* 40 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /**\n * @fileoverview Default locale texts\n * @author NHN. FE Development Lab \n */\n\n module.exports = {\n en: {\n am: 'AM',\n pm: 'PM'\n },\n ko: {\n am: '오전',\n pm: '오후'\n }\n };\n /***/\n },\n /* 41 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var template = __webpack_require__(7);\n\n module.exports = function (context) {\n var source = '
' + '
' + '
' + ' {{if isSpinbox}}' + '
' + ' :' + '
' + ' {{if showMeridiem}}' + ' {{meridiemElement}}' + ' {{/if}}' + ' {{else}}' + '
' + ' :' + '
' + ' {{if showMeridiem}}' + ' {{meridiemElement}}' + ' {{/if}}' + ' {{/if}}' + '
' + '
' + '
';\n return template(source, context);\n };\n /***/\n\n },\n /* 42 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var template = __webpack_require__(7);\n\n module.exports = function (context) {\n var source = '{{if isSpinbox}}' + '
' + '
' + '
    ' + '
  • ' + '
    ' + ' ' + ' ' + '
    ' + '
  • ' + '
  • ' + '
    ' + ' ' + ' ' + '
    ' + '
  • ' + '
' + '
' + '
' + '{{else}}' + '
' + ' ' + '
' + '{{/if}}';\n return template(source, context);\n };\n /***/\n\n }\n /******/\n ])\n );\n});","import {User} from 'utils/user'\nimport {element_with_class} from 'utils/material_elements'\n\nwriteDianomiScript = (contextId) ->\n script = document.createElement('script')\n script.setAttribute('id', \"dianomi_context_script\")\n script.setAttribute('src', \"https://www.dianomi.com/js/contextfeed.js\")\n\n document.getElementById('aph').appendChild script\n\n div = element_with_class('div', 'dianomi_context')\n div.dataset.dianomiContextId = contextId\n\n document.getElementById('aph').appendChild div\n\nrenderAd = ->\n document.getElementById('aph').classList.add('active')\n \n contextId = if window.innerWidth > 768 then 386 else 289\n writeDianomiScript(contextId)\n\nshouldRenderAd = -> document.getElementById('aph') and !User.isPaidActive()\n\nrenderAd() if shouldRenderAd()","trustpilot_lazy_load = ->\n if el = document.querySelector('.trustpilot-widget.lazy-load')\n el.classList.remove 'lazy-load'\n loaded = true\n script = document.createElement('SCRIPT')\n script.setAttribute('async', 'true')\n script.setAttribute('src', \"//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js\")\n el.append script\n\ndocument.addEventListener \"DOMContentLoaded\", trustpilot_lazy_load","/**\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 { cssClasses } from './constants';\n/**\n * Stores result from computeHorizontalScrollbarHeight to avoid redundant processing.\n */\n\nvar horizontalScrollbarHeight_;\n/**\n * Computes the height of browser-rendered horizontal scrollbars using a self-created test element.\n * May return 0 (e.g. on OS X browsers under default configuration).\n */\n\nexport function computeHorizontalScrollbarHeight(documentObj, shouldCacheResult) {\n if (shouldCacheResult === void 0) {\n shouldCacheResult = true;\n }\n\n if (shouldCacheResult && typeof horizontalScrollbarHeight_ !== 'undefined') {\n return horizontalScrollbarHeight_;\n }\n\n var el = documentObj.createElement('div');\n el.classList.add(cssClasses.SCROLL_TEST);\n documentObj.body.appendChild(el);\n var horizontalScrollbarHeight = el.offsetHeight - el.clientHeight;\n documentObj.body.removeChild(el);\n\n if (shouldCacheResult) {\n horizontalScrollbarHeight_ = horizontalScrollbarHeight;\n }\n\n return horizontalScrollbarHeight;\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 */\nvar cssClasses = {\n ANIMATING: 'mdc-tab-scroller--animating',\n SCROLL_AREA_SCROLL: 'mdc-tab-scroller__scroll-area--scroll',\n SCROLL_TEST: 'mdc-tab-scroller__test'\n};\nvar strings = {\n AREA_SELECTOR: '.mdc-tab-scroller__scroll-area',\n CONTENT_SELECTOR: '.mdc-tab-scroller__scroll-content'\n};\nexport { cssClasses, strings };","/**\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 MDCTabScrollerRTL =\n/** @class */\nfunction () {\n function MDCTabScrollerRTL(adapter) {\n this.adapter = adapter;\n }\n\n return MDCTabScrollerRTL;\n}();\n\nexport { MDCTabScrollerRTL }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCTabScrollerRTL;","/**\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 { MDCTabScrollerRTL } from './rtl-scroller';\n\nvar MDCTabScrollerRTLDefault =\n/** @class */\nfunction (_super) {\n __extends(MDCTabScrollerRTLDefault, _super);\n\n function MDCTabScrollerRTLDefault() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCTabScrollerRTLDefault.prototype.getScrollPositionRTL = function () {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n var right = this.calculateScrollEdges_().right; // Scroll values on most browsers are ints instead of floats so we round\n\n return Math.round(right - currentScrollLeft);\n };\n\n MDCTabScrollerRTLDefault.prototype.scrollToRTL = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(edges.right - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n\n MDCTabScrollerRTLDefault.prototype.incrementScrollRTL = function (scrollX) {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n\n MDCTabScrollerRTLDefault.prototype.getAnimatingScrollPosition = function (scrollX) {\n return scrollX;\n };\n\n MDCTabScrollerRTLDefault.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter.getScrollContentOffsetWidth();\n var rootWidth = this.adapter.getScrollAreaOffsetWidth();\n return {\n left: 0,\n right: contentWidth - rootWidth\n };\n };\n\n MDCTabScrollerRTLDefault.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n };\n\n return MDCTabScrollerRTLDefault;\n}(MDCTabScrollerRTL);\n\nexport { MDCTabScrollerRTLDefault }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCTabScrollerRTLDefault;","/**\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 { MDCTabScrollerRTL } from './rtl-scroller';\n\nvar MDCTabScrollerRTLNegative =\n/** @class */\nfunction (_super) {\n __extends(MDCTabScrollerRTLNegative, _super);\n\n function MDCTabScrollerRTLNegative() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCTabScrollerRTLNegative.prototype.getScrollPositionRTL = function (translateX) {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n return Math.round(translateX - currentScrollLeft);\n };\n\n MDCTabScrollerRTLNegative.prototype.scrollToRTL = function (scrollX) {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(-scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n\n MDCTabScrollerRTLNegative.prototype.incrementScrollRTL = function (scrollX) {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft - scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: clampedScrollLeft - currentScrollLeft\n };\n };\n\n MDCTabScrollerRTLNegative.prototype.getAnimatingScrollPosition = function (scrollX, translateX) {\n return scrollX - translateX;\n };\n\n MDCTabScrollerRTLNegative.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter.getScrollContentOffsetWidth();\n var rootWidth = this.adapter.getScrollAreaOffsetWidth();\n return {\n left: rootWidth - contentWidth,\n right: 0\n };\n };\n\n MDCTabScrollerRTLNegative.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.max(Math.min(edges.right, scrollX), edges.left);\n };\n\n return MDCTabScrollerRTLNegative;\n}(MDCTabScrollerRTL);\n\nexport { MDCTabScrollerRTLNegative }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCTabScrollerRTLNegative;","/**\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 { MDCTabScrollerRTL } from './rtl-scroller';\n\nvar MDCTabScrollerRTLReverse =\n/** @class */\nfunction (_super) {\n __extends(MDCTabScrollerRTLReverse, _super);\n\n function MDCTabScrollerRTLReverse() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCTabScrollerRTLReverse.prototype.getScrollPositionRTL = function (translateX) {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft(); // Scroll values on most browsers are ints instead of floats so we round\n\n return Math.round(currentScrollLeft - translateX);\n };\n\n MDCTabScrollerRTLReverse.prototype.scrollToRTL = function (scrollX) {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft\n };\n };\n\n MDCTabScrollerRTLReverse.prototype.incrementScrollRTL = function (scrollX) {\n var currentScrollLeft = this.adapter.getScrollAreaScrollLeft();\n var clampedScrollLeft = this.clampScrollValue_(currentScrollLeft + scrollX);\n return {\n finalScrollPosition: clampedScrollLeft,\n scrollDelta: currentScrollLeft - clampedScrollLeft\n };\n };\n\n MDCTabScrollerRTLReverse.prototype.getAnimatingScrollPosition = function (scrollX, translateX) {\n return scrollX + translateX;\n };\n\n MDCTabScrollerRTLReverse.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter.getScrollContentOffsetWidth();\n var rootWidth = this.adapter.getScrollAreaOffsetWidth();\n return {\n left: contentWidth - rootWidth,\n right: 0\n };\n };\n\n MDCTabScrollerRTLReverse.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.right, scrollX), edges.left);\n };\n\n return MDCTabScrollerRTLReverse;\n}(MDCTabScrollerRTL);\n\nexport { MDCTabScrollerRTLReverse }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCTabScrollerRTLReverse;","/**\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, __read } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, strings } from './constants';\nimport { MDCTabScrollerRTLDefault } from './rtl-default-scroller';\nimport { MDCTabScrollerRTLNegative } from './rtl-negative-scroller';\nimport { MDCTabScrollerRTLReverse } from './rtl-reverse-scroller';\n\nvar MDCTabScrollerFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCTabScrollerFoundation, _super);\n\n function MDCTabScrollerFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCTabScrollerFoundation.defaultAdapter), adapter)) || this;\n /**\n * Controls whether we should handle the transitionend and interaction events during the animation.\n */\n\n\n _this.isAnimating_ = false;\n return _this;\n }\n\n Object.defineProperty(MDCTabScrollerFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabScrollerFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabScrollerFoundation, \"defaultAdapter\", {\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n eventTargetMatchesSelector: function () {\n return false;\n },\n addClass: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n addScrollAreaClass: function () {\n return undefined;\n },\n setScrollAreaStyleProperty: function () {\n return undefined;\n },\n setScrollContentStyleProperty: function () {\n return undefined;\n },\n getScrollContentStyleValue: function () {\n return '';\n },\n setScrollAreaScrollLeft: function () {\n return undefined;\n },\n getScrollAreaScrollLeft: function () {\n return 0;\n },\n getScrollContentOffsetWidth: function () {\n return 0;\n },\n getScrollAreaOffsetWidth: function () {\n return 0;\n },\n computeScrollAreaClientRect: function () {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: 0,\n height: 0\n };\n },\n computeScrollContentClientRect: function () {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: 0,\n height: 0\n };\n },\n computeHorizontalScrollbarHeight: function () {\n return 0;\n }\n }; // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n\n MDCTabScrollerFoundation.prototype.init = function () {\n // Compute horizontal scrollbar height on scroller with overflow initially hidden, then update overflow to scroll\n // and immediately adjust bottom margin to avoid the scrollbar initially appearing before JS runs.\n var horizontalScrollbarHeight = this.adapter.computeHorizontalScrollbarHeight();\n this.adapter.setScrollAreaStyleProperty('margin-bottom', -horizontalScrollbarHeight + 'px');\n this.adapter.addScrollAreaClass(MDCTabScrollerFoundation.cssClasses.SCROLL_AREA_SCROLL);\n };\n /**\n * Computes the current visual scroll position\n */\n\n\n MDCTabScrollerFoundation.prototype.getScrollPosition = function () {\n if (this.isRTL_()) {\n return this.computeCurrentScrollPositionRTL_();\n }\n\n var currentTranslateX = this.calculateCurrentTranslateX_();\n var scrollLeft = this.adapter.getScrollAreaScrollLeft();\n return scrollLeft - currentTranslateX;\n };\n /**\n * Handles interaction events that occur during transition\n */\n\n\n MDCTabScrollerFoundation.prototype.handleInteraction = function () {\n // Early exit if we aren't animating\n if (!this.isAnimating_) {\n return;\n } // Prevent other event listeners from handling this event\n\n\n this.stopScrollAnimation_();\n };\n /**\n * Handles the transitionend event\n */\n\n\n MDCTabScrollerFoundation.prototype.handleTransitionEnd = function (evt) {\n // Early exit if we aren't animating or the event was triggered by a different element.\n var evtTarget = evt.target;\n\n if (!this.isAnimating_ || !this.adapter.eventTargetMatchesSelector(evtTarget, MDCTabScrollerFoundation.strings.CONTENT_SELECTOR)) {\n return;\n }\n\n this.isAnimating_ = false;\n this.adapter.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n };\n /**\n * Increment the scroll value by the scrollXIncrement using animation.\n * @param scrollXIncrement The value by which to increment the scroll position\n */\n\n\n MDCTabScrollerFoundation.prototype.incrementScroll = function (scrollXIncrement) {\n // Early exit for non-operational increment values\n if (scrollXIncrement === 0) {\n return;\n }\n\n this.animate_(this.getIncrementScrollOperation_(scrollXIncrement));\n };\n /**\n * Increment the scroll value by the scrollXIncrement without animation.\n * @param scrollXIncrement The value by which to increment the scroll position\n */\n\n\n MDCTabScrollerFoundation.prototype.incrementScrollImmediate = function (scrollXIncrement) {\n // Early exit for non-operational increment values\n if (scrollXIncrement === 0) {\n return;\n }\n\n var operation = this.getIncrementScrollOperation_(scrollXIncrement);\n\n if (operation.scrollDelta === 0) {\n return;\n }\n\n this.stopScrollAnimation_();\n this.adapter.setScrollAreaScrollLeft(operation.finalScrollPosition);\n };\n /**\n * Scrolls to the given scrollX value\n */\n\n\n MDCTabScrollerFoundation.prototype.scrollTo = function (scrollX) {\n if (this.isRTL_()) {\n return this.scrollToRTL_(scrollX);\n }\n\n this.scrollTo_(scrollX);\n };\n /**\n * @return Browser-specific {@link MDCTabScrollerRTL} instance.\n */\n\n\n MDCTabScrollerFoundation.prototype.getRTLScroller = function () {\n if (!this.rtlScrollerInstance_) {\n this.rtlScrollerInstance_ = this.rtlScrollerFactory_();\n }\n\n return this.rtlScrollerInstance_;\n };\n /**\n * @return translateX value from a CSS matrix transform function string.\n */\n\n\n MDCTabScrollerFoundation.prototype.calculateCurrentTranslateX_ = function () {\n var transformValue = this.adapter.getScrollContentStyleValue('transform'); // Early exit if no transform is present\n\n if (transformValue === 'none') {\n return 0;\n } // The transform value comes back as a matrix transformation in the form\n // of `matrix(a, b, c, d, tx, ty)`. We only care about tx (translateX) so\n // we're going to grab all the parenthesized values, strip out tx, and\n // parse it.\n\n\n var match = /\\((.+?)\\)/.exec(transformValue);\n\n if (!match) {\n return 0;\n }\n\n var matrixParams = match[1]; // tslint:disable-next-line:ban-ts-ignore \"Unused vars\" should be a linter warning, not a compiler error.\n // @ts-ignore These unused variables should retain their semantic names for clarity.\n\n var _a = __read(matrixParams.split(','), 6),\n a = _a[0],\n b = _a[1],\n c = _a[2],\n d = _a[3],\n tx = _a[4],\n ty = _a[5];\n\n return parseFloat(tx); // tslint:disable-line:ban\n };\n /**\n * Calculates a safe scroll value that is > 0 and < the max scroll value\n * @param scrollX The distance to scroll\n */\n\n\n MDCTabScrollerFoundation.prototype.clampScrollValue_ = function (scrollX) {\n var edges = this.calculateScrollEdges_();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n };\n\n MDCTabScrollerFoundation.prototype.computeCurrentScrollPositionRTL_ = function () {\n var translateX = this.calculateCurrentTranslateX_();\n return this.getRTLScroller().getScrollPositionRTL(translateX);\n };\n\n MDCTabScrollerFoundation.prototype.calculateScrollEdges_ = function () {\n var contentWidth = this.adapter.getScrollContentOffsetWidth();\n var rootWidth = this.adapter.getScrollAreaOffsetWidth();\n return {\n left: 0,\n right: contentWidth - rootWidth\n };\n };\n /**\n * Internal scroll method\n * @param scrollX The new scroll position\n */\n\n\n MDCTabScrollerFoundation.prototype.scrollTo_ = function (scrollX) {\n var currentScrollX = this.getScrollPosition();\n var safeScrollX = this.clampScrollValue_(scrollX);\n var scrollDelta = safeScrollX - currentScrollX;\n this.animate_({\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta\n });\n };\n /**\n * Internal RTL scroll method\n * @param scrollX The new scroll position\n */\n\n\n MDCTabScrollerFoundation.prototype.scrollToRTL_ = function (scrollX) {\n var animation = this.getRTLScroller().scrollToRTL(scrollX);\n this.animate_(animation);\n };\n /**\n * Internal method to compute the increment scroll operation values.\n * @param scrollX The desired scroll position increment\n * @return MDCTabScrollerAnimation with the sanitized values for performing the scroll operation.\n */\n\n\n MDCTabScrollerFoundation.prototype.getIncrementScrollOperation_ = function (scrollX) {\n if (this.isRTL_()) {\n return this.getRTLScroller().incrementScrollRTL(scrollX);\n }\n\n var currentScrollX = this.getScrollPosition();\n var targetScrollX = scrollX + currentScrollX;\n var safeScrollX = this.clampScrollValue_(targetScrollX);\n var scrollDelta = safeScrollX - currentScrollX;\n return {\n finalScrollPosition: safeScrollX,\n scrollDelta: scrollDelta\n };\n };\n /**\n * Animates the tab scrolling\n * @param animation The animation to apply\n */\n\n\n MDCTabScrollerFoundation.prototype.animate_ = function (animation) {\n var _this = this; // Early exit if translateX is 0, which means there's no animation to perform\n\n\n if (animation.scrollDelta === 0) {\n return;\n }\n\n this.stopScrollAnimation_(); // This animation uses the FLIP approach.\n // Read more here: https://aerotwist.com/blog/flip-your-animations/\n\n this.adapter.setScrollAreaScrollLeft(animation.finalScrollPosition);\n this.adapter.setScrollContentStyleProperty('transform', \"translateX(\" + animation.scrollDelta + \"px)\"); // Force repaint\n\n this.adapter.computeScrollAreaClientRect();\n requestAnimationFrame(function () {\n _this.adapter.addClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n\n _this.adapter.setScrollContentStyleProperty('transform', 'none');\n });\n this.isAnimating_ = true;\n };\n /**\n * Stops scroll animation\n */\n\n\n MDCTabScrollerFoundation.prototype.stopScrollAnimation_ = function () {\n this.isAnimating_ = false;\n var currentScrollPosition = this.getAnimatingScrollPosition_();\n this.adapter.removeClass(MDCTabScrollerFoundation.cssClasses.ANIMATING);\n this.adapter.setScrollContentStyleProperty('transform', 'translateX(0px)');\n this.adapter.setScrollAreaScrollLeft(currentScrollPosition);\n };\n /**\n * Gets the current scroll position during animation\n */\n\n\n MDCTabScrollerFoundation.prototype.getAnimatingScrollPosition_ = function () {\n var currentTranslateX = this.calculateCurrentTranslateX_();\n var scrollLeft = this.adapter.getScrollAreaScrollLeft();\n\n if (this.isRTL_()) {\n return this.getRTLScroller().getAnimatingScrollPosition(scrollLeft, currentTranslateX);\n }\n\n return scrollLeft - currentTranslateX;\n };\n /**\n * Determines the RTL Scroller to use\n */\n\n\n MDCTabScrollerFoundation.prototype.rtlScrollerFactory_ = function () {\n // Browsers have three different implementations of scrollLeft in RTL mode,\n // dependent on the browser. The behavior is based off the max LTR\n // scrollLeft value and 0.\n //\n // * Default scrolling in RTL *\n // - Left-most value: 0\n // - Right-most value: Max LTR scrollLeft value\n //\n // * Negative scrolling in RTL *\n // - Left-most value: Negated max LTR scrollLeft value\n // - Right-most value: 0\n //\n // * Reverse scrolling in RTL *\n // - Left-most value: Max LTR scrollLeft value\n // - Right-most value: 0\n //\n // We use those principles below to determine which RTL scrollLeft\n // behavior is implemented in the current browser.\n var initialScrollLeft = this.adapter.getScrollAreaScrollLeft();\n this.adapter.setScrollAreaScrollLeft(initialScrollLeft - 1);\n var newScrollLeft = this.adapter.getScrollAreaScrollLeft(); // If the newScrollLeft value is negative,then we know that the browser has\n // implemented negative RTL scrolling, since all other implementations have\n // only positive values.\n\n if (newScrollLeft < 0) {\n // Undo the scrollLeft test check\n this.adapter.setScrollAreaScrollLeft(initialScrollLeft);\n return new MDCTabScrollerRTLNegative(this.adapter);\n }\n\n var rootClientRect = this.adapter.computeScrollAreaClientRect();\n var contentClientRect = this.adapter.computeScrollContentClientRect();\n var rightEdgeDelta = Math.round(contentClientRect.right - rootClientRect.right); // Undo the scrollLeft test check\n\n this.adapter.setScrollAreaScrollLeft(initialScrollLeft); // By calculating the clientRect of the root element and the clientRect of\n // the content element, we can determine how much the scroll value changed\n // when we performed the scrollLeft subtraction above.\n\n if (rightEdgeDelta === newScrollLeft) {\n return new MDCTabScrollerRTLReverse(this.adapter);\n }\n\n return new MDCTabScrollerRTLDefault(this.adapter);\n };\n\n MDCTabScrollerFoundation.prototype.isRTL_ = function () {\n return this.adapter.getScrollContentStyleValue('direction') === 'rtl';\n };\n\n return MDCTabScrollerFoundation;\n}(MDCFoundation);\n\nexport { MDCTabScrollerFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCTabScrollerFoundation;","/**\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 { applyPassive } from '@material/dom/events';\nimport { matches } from '@material/dom/ponyfill';\nimport { MDCTabScrollerFoundation } from './foundation';\nimport * as util from './util';\n\nvar MDCTabScroller =\n/** @class */\nfunction (_super) {\n __extends(MDCTabScroller, _super);\n\n function MDCTabScroller() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCTabScroller.attachTo = function (root) {\n return new MDCTabScroller(root);\n };\n\n MDCTabScroller.prototype.initialize = function () {\n this.area_ = this.root.querySelector(MDCTabScrollerFoundation.strings.AREA_SELECTOR);\n this.content_ = this.root.querySelector(MDCTabScrollerFoundation.strings.CONTENT_SELECTOR);\n };\n\n MDCTabScroller.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.handleInteraction_ = function () {\n return _this.foundation.handleInteraction();\n };\n\n this.handleTransitionEnd_ = function (evt) {\n return _this.foundation.handleTransitionEnd(evt);\n };\n\n this.area_.addEventListener('wheel', this.handleInteraction_, applyPassive());\n this.area_.addEventListener('touchstart', this.handleInteraction_, applyPassive());\n this.area_.addEventListener('pointerdown', this.handleInteraction_, applyPassive());\n this.area_.addEventListener('mousedown', this.handleInteraction_, applyPassive());\n this.area_.addEventListener('keydown', this.handleInteraction_, applyPassive());\n this.content_.addEventListener('transitionend', this.handleTransitionEnd_);\n };\n\n MDCTabScroller.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this.area_.removeEventListener('wheel', this.handleInteraction_, applyPassive());\n this.area_.removeEventListener('touchstart', this.handleInteraction_, applyPassive());\n this.area_.removeEventListener('pointerdown', this.handleInteraction_, applyPassive());\n this.area_.removeEventListener('mousedown', this.handleInteraction_, applyPassive());\n this.area_.removeEventListener('keydown', this.handleInteraction_, applyPassive());\n this.content_.removeEventListener('transitionend', this.handleTransitionEnd_);\n };\n\n MDCTabScroller.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\n var adapter = {\n eventTargetMatchesSelector: function (evtTarget, selector) {\n return matches(evtTarget, selector);\n },\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 addScrollAreaClass: function (className) {\n return _this.area_.classList.add(className);\n },\n setScrollAreaStyleProperty: function (prop, value) {\n return _this.area_.style.setProperty(prop, value);\n },\n setScrollContentStyleProperty: function (prop, value) {\n return _this.content_.style.setProperty(prop, value);\n },\n getScrollContentStyleValue: function (propName) {\n return window.getComputedStyle(_this.content_).getPropertyValue(propName);\n },\n setScrollAreaScrollLeft: function (scrollX) {\n return _this.area_.scrollLeft = scrollX;\n },\n getScrollAreaScrollLeft: function () {\n return _this.area_.scrollLeft;\n },\n getScrollContentOffsetWidth: function () {\n return _this.content_.offsetWidth;\n },\n getScrollAreaOffsetWidth: function () {\n return _this.area_.offsetWidth;\n },\n computeScrollAreaClientRect: function () {\n return _this.area_.getBoundingClientRect();\n },\n computeScrollContentClientRect: function () {\n return _this.content_.getBoundingClientRect();\n },\n computeHorizontalScrollbarHeight: function () {\n return util.computeHorizontalScrollbarHeight(document);\n }\n }; // tslint:enable:object-literal-sort-keys\n\n return new MDCTabScrollerFoundation(adapter);\n };\n /**\n * Returns the current visual scroll position\n */\n\n\n MDCTabScroller.prototype.getScrollPosition = function () {\n return this.foundation.getScrollPosition();\n };\n /**\n * Returns the width of the scroll content\n */\n\n\n MDCTabScroller.prototype.getScrollContentWidth = function () {\n return this.content_.offsetWidth;\n };\n /**\n * Increments the scroll value by the given amount\n * @param scrollXIncrement The pixel value by which to increment the scroll value\n */\n\n\n MDCTabScroller.prototype.incrementScroll = function (scrollXIncrement) {\n this.foundation.incrementScroll(scrollXIncrement);\n };\n /**\n * Scrolls to the given pixel position\n * @param scrollX The pixel value to scroll to\n */\n\n\n MDCTabScroller.prototype.scrollTo = function (scrollX) {\n this.foundation.scrollTo(scrollX);\n };\n\n return MDCTabScroller;\n}(MDCComponent);\n\nexport { MDCTabScroller };","/**\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 ACTIVE: 'mdc-tab--active'\n};\nvar strings = {\n ARIA_SELECTED: 'aria-selected',\n CONTENT_SELECTOR: '.mdc-tab__content',\n INTERACTED_EVENT: 'MDCTab:interacted',\n RIPPLE_SELECTOR: '.mdc-tab__ripple',\n TABINDEX: 'tabIndex',\n TAB_INDICATOR_SELECTOR: '.mdc-tab-indicator'\n};\nexport { cssClasses, strings };","/**\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, strings } from './constants';\n\nvar MDCTabFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCTabFoundation, _super);\n\n function MDCTabFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCTabFoundation.defaultAdapter), adapter)) || this;\n\n _this.focusOnActivate_ = true;\n return _this;\n }\n\n Object.defineProperty(MDCTabFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabFoundation, \"defaultAdapter\", {\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 setAttr: function () {\n return undefined;\n },\n activateIndicator: function () {\n return undefined;\n },\n deactivateIndicator: function () {\n return undefined;\n },\n notifyInteracted: function () {\n return undefined;\n },\n getOffsetLeft: function () {\n return 0;\n },\n getOffsetWidth: function () {\n return 0;\n },\n getContentOffsetLeft: function () {\n return 0;\n },\n getContentOffsetWidth: function () {\n return 0;\n },\n focus: function () {\n return undefined;\n }\n }; // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n\n MDCTabFoundation.prototype.handleClick = function () {\n // It's up to the parent component to keep track of the active Tab and\n // ensure we don't activate a Tab that's already active.\n this.adapter.notifyInteracted();\n };\n\n MDCTabFoundation.prototype.isActive = function () {\n return this.adapter.hasClass(cssClasses.ACTIVE);\n };\n /**\n * Sets whether the tab should focus itself when activated\n */\n\n\n MDCTabFoundation.prototype.setFocusOnActivate = function (focusOnActivate) {\n this.focusOnActivate_ = focusOnActivate;\n };\n /**\n * Activates the Tab\n */\n\n\n MDCTabFoundation.prototype.activate = function (previousIndicatorClientRect) {\n this.adapter.addClass(cssClasses.ACTIVE);\n this.adapter.setAttr(strings.ARIA_SELECTED, 'true');\n this.adapter.setAttr(strings.TABINDEX, '0');\n this.adapter.activateIndicator(previousIndicatorClientRect);\n\n if (this.focusOnActivate_) {\n this.adapter.focus();\n }\n };\n /**\n * Deactivates the Tab\n */\n\n\n MDCTabFoundation.prototype.deactivate = function () {\n // Early exit\n if (!this.isActive()) {\n return;\n }\n\n this.adapter.removeClass(cssClasses.ACTIVE);\n this.adapter.setAttr(strings.ARIA_SELECTED, 'false');\n this.adapter.setAttr(strings.TABINDEX, '-1');\n this.adapter.deactivateIndicator();\n };\n /**\n * Returns the dimensions of the Tab\n */\n\n\n MDCTabFoundation.prototype.computeDimensions = function () {\n var rootWidth = this.adapter.getOffsetWidth();\n var rootLeft = this.adapter.getOffsetLeft();\n var contentWidth = this.adapter.getContentOffsetWidth();\n var contentLeft = this.adapter.getContentOffsetLeft();\n return {\n contentLeft: rootLeft + contentLeft,\n contentRight: rootLeft + contentLeft + contentWidth,\n rootLeft: rootLeft,\n rootRight: rootLeft + rootWidth\n };\n };\n\n return MDCTabFoundation;\n}(MDCFoundation);\n\nexport { MDCTabFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCTabFoundation;","/**\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 { MDCComponent } from '@material/base/component';\nimport { MDCRipple } from '@material/ripple/component';\nimport { MDCRippleFoundation } from '@material/ripple/foundation';\nimport { MDCTabIndicator } from '@material/tab-indicator/component';\nimport { MDCTabFoundation } from './foundation';\n\nvar MDCTab =\n/** @class */\nfunction (_super) {\n __extends(MDCTab, _super);\n\n function MDCTab() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCTab.attachTo = function (root) {\n return new MDCTab(root);\n };\n\n MDCTab.prototype.initialize = function (rippleFactory, tabIndicatorFactory) {\n if (rippleFactory === void 0) {\n rippleFactory = function (el, foundation) {\n return new MDCRipple(el, foundation);\n };\n }\n\n if (tabIndicatorFactory === void 0) {\n tabIndicatorFactory = function (el) {\n return new MDCTabIndicator(el);\n };\n }\n\n this.id = this.root.id;\n var rippleSurface = this.root.querySelector(MDCTabFoundation.strings.RIPPLE_SELECTOR);\n\n var rippleAdapter = __assign(__assign({}, MDCRipple.createAdapter(this)), {\n addClass: function (className) {\n return rippleSurface.classList.add(className);\n },\n removeClass: function (className) {\n return rippleSurface.classList.remove(className);\n },\n updateCssVariable: function (varName, value) {\n return rippleSurface.style.setProperty(varName, value);\n }\n });\n\n var rippleFoundation = new MDCRippleFoundation(rippleAdapter);\n this.ripple_ = rippleFactory(this.root, rippleFoundation);\n var tabIndicatorElement = this.root.querySelector(MDCTabFoundation.strings.TAB_INDICATOR_SELECTOR);\n this.tabIndicator_ = tabIndicatorFactory(tabIndicatorElement);\n this.content_ = this.root.querySelector(MDCTabFoundation.strings.CONTENT_SELECTOR);\n };\n\n MDCTab.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.handleClick_ = function () {\n return _this.foundation.handleClick();\n };\n\n this.listen('click', this.handleClick_);\n };\n\n MDCTab.prototype.destroy = function () {\n this.unlisten('click', this.handleClick_);\n this.ripple_.destroy();\n\n _super.prototype.destroy.call(this);\n };\n\n MDCTab.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\n var adapter = {\n setAttr: function (attr, value) {\n return _this.root.setAttribute(attr, value);\n },\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 activateIndicator: function (previousIndicatorClientRect) {\n return _this.tabIndicator_.activate(previousIndicatorClientRect);\n },\n deactivateIndicator: function () {\n return _this.tabIndicator_.deactivate();\n },\n notifyInteracted: function () {\n return _this.emit(MDCTabFoundation.strings.INTERACTED_EVENT, {\n tabId: _this.id\n }, true\n /* bubble */\n );\n },\n getOffsetLeft: function () {\n return _this.root.offsetLeft;\n },\n getOffsetWidth: function () {\n return _this.root.offsetWidth;\n },\n getContentOffsetLeft: function () {\n return _this.content_.offsetLeft;\n },\n getContentOffsetWidth: function () {\n return _this.content_.offsetWidth;\n },\n focus: function () {\n return _this.root.focus();\n }\n }; // tslint:enable:object-literal-sort-keys\n\n return new MDCTabFoundation(adapter);\n };\n\n Object.defineProperty(MDCTab.prototype, \"active\", {\n /**\n * Getter for the active state of the tab\n */\n get: function () {\n return this.foundation.isActive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTab.prototype, \"focusOnActivate\", {\n set: function (focusOnActivate) {\n this.foundation.setFocusOnActivate(focusOnActivate);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Activates the tab\n */\n\n MDCTab.prototype.activate = function (computeIndicatorClientRect) {\n this.foundation.activate(computeIndicatorClientRect);\n };\n /**\n * Deactivates the tab\n */\n\n\n MDCTab.prototype.deactivate = function () {\n this.foundation.deactivate();\n };\n /**\n * Returns the indicator's client rect\n */\n\n\n MDCTab.prototype.computeIndicatorClientRect = function () {\n return this.tabIndicator_.computeContentClientRect();\n };\n\n MDCTab.prototype.computeDimensions = function () {\n return this.foundation.computeDimensions();\n };\n /**\n * Focuses the tab\n */\n\n\n MDCTab.prototype.focus = function () {\n this.root.focus();\n };\n\n return MDCTab;\n}(MDCComponent);\n\nexport { MDCTab };","/**\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 ARROW_LEFT_KEY: 'ArrowLeft',\n ARROW_RIGHT_KEY: 'ArrowRight',\n END_KEY: 'End',\n ENTER_KEY: 'Enter',\n HOME_KEY: 'Home',\n SPACE_KEY: 'Space',\n TAB_ACTIVATED_EVENT: 'MDCTabBar:activated',\n TAB_SCROLLER_SELECTOR: '.mdc-tab-scroller',\n TAB_SELECTOR: '.mdc-tab'\n};\nvar numbers = {\n ARROW_LEFT_KEYCODE: 37,\n ARROW_RIGHT_KEYCODE: 39,\n END_KEYCODE: 35,\n ENTER_KEYCODE: 13,\n EXTRA_SCROLL_AMOUNT: 20,\n HOME_KEYCODE: 36,\n SPACE_KEYCODE: 32\n};\nexport { numbers, strings };","/**\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 { numbers, strings } from './constants';\nvar ACCEPTABLE_KEYS = new Set(); // IE11 has no support for new Set with iterable so we need to initialize this by hand\n\nACCEPTABLE_KEYS.add(strings.ARROW_LEFT_KEY);\nACCEPTABLE_KEYS.add(strings.ARROW_RIGHT_KEY);\nACCEPTABLE_KEYS.add(strings.END_KEY);\nACCEPTABLE_KEYS.add(strings.HOME_KEY);\nACCEPTABLE_KEYS.add(strings.ENTER_KEY);\nACCEPTABLE_KEYS.add(strings.SPACE_KEY);\nvar KEYCODE_MAP = new Map(); // IE11 has no support for new Map with iterable so we need to initialize this by hand\n\nKEYCODE_MAP.set(numbers.ARROW_LEFT_KEYCODE, strings.ARROW_LEFT_KEY);\nKEYCODE_MAP.set(numbers.ARROW_RIGHT_KEYCODE, strings.ARROW_RIGHT_KEY);\nKEYCODE_MAP.set(numbers.END_KEYCODE, strings.END_KEY);\nKEYCODE_MAP.set(numbers.HOME_KEYCODE, strings.HOME_KEY);\nKEYCODE_MAP.set(numbers.ENTER_KEYCODE, strings.ENTER_KEY);\nKEYCODE_MAP.set(numbers.SPACE_KEYCODE, strings.SPACE_KEY);\n\nvar MDCTabBarFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCTabBarFoundation, _super);\n\n function MDCTabBarFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCTabBarFoundation.defaultAdapter), adapter)) || this;\n\n _this.useAutomaticActivation_ = false;\n return _this;\n }\n\n Object.defineProperty(MDCTabBarFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBarFoundation, \"defaultAdapter\", {\n get: function () {\n // tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.\n return {\n scrollTo: function () {\n return undefined;\n },\n incrementScroll: function () {\n return undefined;\n },\n getScrollPosition: function () {\n return 0;\n },\n getScrollContentWidth: function () {\n return 0;\n },\n getOffsetWidth: function () {\n return 0;\n },\n isRTL: function () {\n return false;\n },\n setActiveTab: function () {\n return undefined;\n },\n activateTabAtIndex: function () {\n return undefined;\n },\n deactivateTabAtIndex: function () {\n return undefined;\n },\n focusTabAtIndex: function () {\n return undefined;\n },\n getTabIndicatorClientRectAtIndex: function () {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n width: 0,\n height: 0\n };\n },\n getTabDimensionsAtIndex: function () {\n return {\n rootLeft: 0,\n rootRight: 0,\n contentLeft: 0,\n contentRight: 0\n };\n },\n getPreviousActiveTabIndex: function () {\n return -1;\n },\n getFocusedTabIndex: function () {\n return -1;\n },\n getIndexOfTabById: function () {\n return -1;\n },\n getTabListLength: function () {\n return 0;\n },\n notifyTabActivated: function () {\n return undefined;\n }\n }; // tslint:enable:object-literal-sort-keys\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Switches between automatic and manual activation modes.\n * See https://www.w3.org/TR/wai-aria-practices/#tabpanel for examples.\n */\n\n MDCTabBarFoundation.prototype.setUseAutomaticActivation = function (useAutomaticActivation) {\n this.useAutomaticActivation_ = useAutomaticActivation;\n };\n\n MDCTabBarFoundation.prototype.activateTab = function (index) {\n var previousActiveIndex = this.adapter.getPreviousActiveTabIndex();\n\n if (!this.indexIsInRange_(index) || index === previousActiveIndex) {\n return;\n }\n\n var previousClientRect;\n\n if (previousActiveIndex !== -1) {\n this.adapter.deactivateTabAtIndex(previousActiveIndex);\n previousClientRect = this.adapter.getTabIndicatorClientRectAtIndex(previousActiveIndex);\n }\n\n this.adapter.activateTabAtIndex(index, previousClientRect);\n this.scrollIntoView(index);\n this.adapter.notifyTabActivated(index);\n };\n\n MDCTabBarFoundation.prototype.handleKeyDown = function (evt) {\n // Get the key from the event\n var key = this.getKeyFromEvent_(evt); // Early exit if the event key isn't one of the keyboard navigation keys\n\n if (key === undefined) {\n return;\n } // Prevent default behavior for movement keys, but not for activation keys, since :active is used to apply ripple\n\n\n if (!this.isActivationKey_(key)) {\n evt.preventDefault();\n }\n\n if (this.useAutomaticActivation_) {\n if (this.isActivationKey_(key)) {\n return;\n }\n\n var index = this.determineTargetFromKey_(this.adapter.getPreviousActiveTabIndex(), key);\n this.adapter.setActiveTab(index);\n this.scrollIntoView(index);\n } else {\n var focusedTabIndex = this.adapter.getFocusedTabIndex();\n\n if (this.isActivationKey_(key)) {\n this.adapter.setActiveTab(focusedTabIndex);\n } else {\n var index = this.determineTargetFromKey_(focusedTabIndex, key);\n this.adapter.focusTabAtIndex(index);\n this.scrollIntoView(index);\n }\n }\n };\n /**\n * Handles the MDCTab:interacted event\n */\n\n\n MDCTabBarFoundation.prototype.handleTabInteraction = function (evt) {\n this.adapter.setActiveTab(this.adapter.getIndexOfTabById(evt.detail.tabId));\n };\n /**\n * Scrolls the tab at the given index into view\n * @param index The tab index to make visible\n */\n\n\n MDCTabBarFoundation.prototype.scrollIntoView = function (index) {\n // Early exit if the index is out of range\n if (!this.indexIsInRange_(index)) {\n return;\n } // Always scroll to 0 if scrolling to the 0th index\n\n\n if (index === 0) {\n return this.adapter.scrollTo(0);\n } // Always scroll to the max value if scrolling to the Nth index\n // MDCTabScroller.scrollTo() will never scroll past the max possible value\n\n\n if (index === this.adapter.getTabListLength() - 1) {\n return this.adapter.scrollTo(this.adapter.getScrollContentWidth());\n }\n\n if (this.isRTL_()) {\n return this.scrollIntoViewRTL_(index);\n }\n\n this.scrollIntoView_(index);\n };\n /**\n * Private method for determining the index of the destination tab based on what key was pressed\n * @param origin The original index from which to determine the destination\n * @param key The name of the key\n */\n\n\n MDCTabBarFoundation.prototype.determineTargetFromKey_ = function (origin, key) {\n var isRTL = this.isRTL_();\n var maxIndex = this.adapter.getTabListLength() - 1;\n var shouldGoToEnd = key === strings.END_KEY;\n var shouldDecrement = key === strings.ARROW_LEFT_KEY && !isRTL || key === strings.ARROW_RIGHT_KEY && isRTL;\n var shouldIncrement = key === strings.ARROW_RIGHT_KEY && !isRTL || key === strings.ARROW_LEFT_KEY && isRTL;\n var index = origin;\n\n if (shouldGoToEnd) {\n index = maxIndex;\n } else if (shouldDecrement) {\n index -= 1;\n } else if (shouldIncrement) {\n index += 1;\n } else {\n index = 0;\n }\n\n if (index < 0) {\n index = maxIndex;\n } else if (index > maxIndex) {\n index = 0;\n }\n\n return index;\n };\n /**\n * Calculates the scroll increment that will make the tab at the given index visible\n * @param index The index of the tab\n * @param nextIndex The index of the next tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the Tab Bar\n */\n\n\n MDCTabBarFoundation.prototype.calculateScrollIncrement_ = function (index, nextIndex, scrollPosition, barWidth) {\n var nextTabDimensions = this.adapter.getTabDimensionsAtIndex(nextIndex);\n var relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;\n var relativeContentRight = nextTabDimensions.contentRight - scrollPosition;\n var leftIncrement = relativeContentRight - numbers.EXTRA_SCROLL_AMOUNT;\n var rightIncrement = relativeContentLeft + numbers.EXTRA_SCROLL_AMOUNT;\n\n if (nextIndex < index) {\n return Math.min(leftIncrement, 0);\n }\n\n return Math.max(rightIncrement, 0);\n };\n /**\n * Calculates the scroll increment that will make the tab at the given index visible in RTL\n * @param index The index of the tab\n * @param nextIndex The index of the next tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the Tab Bar\n * @param scrollContentWidth The width of the scroll content\n */\n\n\n MDCTabBarFoundation.prototype.calculateScrollIncrementRTL_ = function (index, nextIndex, scrollPosition, barWidth, scrollContentWidth) {\n var nextTabDimensions = this.adapter.getTabDimensionsAtIndex(nextIndex);\n var relativeContentLeft = scrollContentWidth - nextTabDimensions.contentLeft - scrollPosition;\n var relativeContentRight = scrollContentWidth - nextTabDimensions.contentRight - scrollPosition - barWidth;\n var leftIncrement = relativeContentRight + numbers.EXTRA_SCROLL_AMOUNT;\n var rightIncrement = relativeContentLeft - numbers.EXTRA_SCROLL_AMOUNT;\n\n if (nextIndex > index) {\n return Math.max(leftIncrement, 0);\n }\n\n return Math.min(rightIncrement, 0);\n };\n /**\n * Determines the index of the adjacent tab closest to either edge of the Tab Bar\n * @param index The index of the tab\n * @param tabDimensions The dimensions of the tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the tab bar\n */\n\n\n MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdge_ = function (index, tabDimensions, scrollPosition, barWidth) {\n /**\n * Tabs are laid out in the Tab Scroller like this:\n *\n * Scroll Position\n * +---+\n * | | Bar Width\n * | +-----------------------------------+\n * | | |\n * | V V\n * | +-----------------------------------+\n * V | Tab Scroller |\n * +------------+--------------+-------------------+\n * | Tab | Tab | Tab |\n * +------------+--------------+-------------------+\n * | |\n * +-----------------------------------+\n *\n * To determine the next adjacent index, we look at the Tab root left and\n * Tab root right, both relative to the scroll position. If the Tab root\n * left is less than 0, then we know it's out of view to the left. If the\n * Tab root right minus the bar width is greater than 0, we know the Tab is\n * out of view to the right. From there, we either increment or decrement\n * the index.\n */\n var relativeRootLeft = tabDimensions.rootLeft - scrollPosition;\n var relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;\n var relativeRootDelta = relativeRootLeft + relativeRootRight;\n var leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;\n var rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;\n\n if (leftEdgeIsCloser) {\n return index - 1;\n }\n\n if (rightEdgeIsCloser) {\n return index + 1;\n }\n\n return -1;\n };\n /**\n * Determines the index of the adjacent tab closest to either edge of the Tab Bar in RTL\n * @param index The index of the tab\n * @param tabDimensions The dimensions of the tab\n * @param scrollPosition The current scroll position\n * @param barWidth The width of the tab bar\n * @param scrollContentWidth The width of the scroller content\n */\n\n\n MDCTabBarFoundation.prototype.findAdjacentTabIndexClosestToEdgeRTL_ = function (index, tabDimensions, scrollPosition, barWidth, scrollContentWidth) {\n var rootLeft = scrollContentWidth - tabDimensions.rootLeft - barWidth - scrollPosition;\n var rootRight = scrollContentWidth - tabDimensions.rootRight - scrollPosition;\n var rootDelta = rootLeft + rootRight;\n var leftEdgeIsCloser = rootLeft > 0 || rootDelta > 0;\n var rightEdgeIsCloser = rootRight < 0 || rootDelta < 0;\n\n if (leftEdgeIsCloser) {\n return index + 1;\n }\n\n if (rightEdgeIsCloser) {\n return index - 1;\n }\n\n return -1;\n };\n /**\n * Returns the key associated with a keydown event\n * @param evt The keydown event\n */\n\n\n MDCTabBarFoundation.prototype.getKeyFromEvent_ = function (evt) {\n if (ACCEPTABLE_KEYS.has(evt.key)) {\n return evt.key;\n }\n\n return KEYCODE_MAP.get(evt.keyCode);\n };\n\n MDCTabBarFoundation.prototype.isActivationKey_ = function (key) {\n return key === strings.SPACE_KEY || key === strings.ENTER_KEY;\n };\n /**\n * Returns whether a given index is inclusively between the ends\n * @param index The index to test\n */\n\n\n MDCTabBarFoundation.prototype.indexIsInRange_ = function (index) {\n return index >= 0 && index < this.adapter.getTabListLength();\n };\n /**\n * Returns the view's RTL property\n */\n\n\n MDCTabBarFoundation.prototype.isRTL_ = function () {\n return this.adapter.isRTL();\n };\n /**\n * Scrolls the tab at the given index into view for left-to-right user agents.\n * @param index The index of the tab to scroll into view\n */\n\n\n MDCTabBarFoundation.prototype.scrollIntoView_ = function (index) {\n var scrollPosition = this.adapter.getScrollPosition();\n var barWidth = this.adapter.getOffsetWidth();\n var tabDimensions = this.adapter.getTabDimensionsAtIndex(index);\n var nextIndex = this.findAdjacentTabIndexClosestToEdge_(index, tabDimensions, scrollPosition, barWidth);\n\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n\n var scrollIncrement = this.calculateScrollIncrement_(index, nextIndex, scrollPosition, barWidth);\n this.adapter.incrementScroll(scrollIncrement);\n };\n /**\n * Scrolls the tab at the given index into view in RTL\n * @param index The tab index to make visible\n */\n\n\n MDCTabBarFoundation.prototype.scrollIntoViewRTL_ = function (index) {\n var scrollPosition = this.adapter.getScrollPosition();\n var barWidth = this.adapter.getOffsetWidth();\n var tabDimensions = this.adapter.getTabDimensionsAtIndex(index);\n var scrollWidth = this.adapter.getScrollContentWidth();\n var nextIndex = this.findAdjacentTabIndexClosestToEdgeRTL_(index, tabDimensions, scrollPosition, barWidth, scrollWidth);\n\n if (!this.indexIsInRange_(nextIndex)) {\n return;\n }\n\n var scrollIncrement = this.calculateScrollIncrementRTL_(index, nextIndex, scrollPosition, barWidth, scrollWidth);\n this.adapter.incrementScroll(scrollIncrement);\n };\n\n return MDCTabBarFoundation;\n}(MDCFoundation);\n\nexport { MDCTabBarFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCTabBarFoundation;","/**\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 { MDCTabScroller } from '@material/tab-scroller/component';\nimport { MDCTab } from '@material/tab/component';\nimport { MDCTabFoundation } from '@material/tab/foundation';\nimport { MDCTabBarFoundation } from './foundation';\nvar strings = MDCTabBarFoundation.strings;\nvar tabIdCounter = 0;\n\nvar MDCTabBar =\n/** @class */\nfunction (_super) {\n __extends(MDCTabBar, _super);\n\n function MDCTabBar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCTabBar.attachTo = function (root) {\n return new MDCTabBar(root);\n };\n\n Object.defineProperty(MDCTabBar.prototype, \"focusOnActivate\", {\n set: function (focusOnActivate) {\n this.tabList_.forEach(function (tab) {\n return tab.focusOnActivate = focusOnActivate;\n });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCTabBar.prototype, \"useAutomaticActivation\", {\n set: function (useAutomaticActivation) {\n this.foundation.setUseAutomaticActivation(useAutomaticActivation);\n },\n enumerable: true,\n configurable: true\n });\n\n MDCTabBar.prototype.initialize = function (tabFactory, tabScrollerFactory) {\n if (tabFactory === void 0) {\n tabFactory = function (el) {\n return new MDCTab(el);\n };\n }\n\n if (tabScrollerFactory === void 0) {\n tabScrollerFactory = function (el) {\n return new MDCTabScroller(el);\n };\n }\n\n this.tabList_ = this.instantiateTabs_(tabFactory);\n this.tabScroller_ = this.instantiateTabScroller_(tabScrollerFactory);\n };\n\n MDCTabBar.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.handleTabInteraction_ = function (evt) {\n return _this.foundation.handleTabInteraction(evt);\n };\n\n this.handleKeyDown_ = function (evt) {\n return _this.foundation.handleKeyDown(evt);\n };\n\n this.listen(MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.listen('keydown', this.handleKeyDown_);\n\n for (var i = 0; i < this.tabList_.length; i++) {\n if (this.tabList_[i].active) {\n this.scrollIntoView(i);\n break;\n }\n }\n };\n\n MDCTabBar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n\n this.unlisten(MDCTabFoundation.strings.INTERACTED_EVENT, this.handleTabInteraction_);\n this.unlisten('keydown', this.handleKeyDown_);\n this.tabList_.forEach(function (tab) {\n return tab.destroy();\n });\n\n if (this.tabScroller_) {\n this.tabScroller_.destroy();\n }\n };\n\n MDCTabBar.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\n var adapter = {\n scrollTo: function (scrollX) {\n return _this.tabScroller_.scrollTo(scrollX);\n },\n incrementScroll: function (scrollXIncrement) {\n return _this.tabScroller_.incrementScroll(scrollXIncrement);\n },\n getScrollPosition: function () {\n return _this.tabScroller_.getScrollPosition();\n },\n getScrollContentWidth: function () {\n return _this.tabScroller_.getScrollContentWidth();\n },\n getOffsetWidth: function () {\n return _this.root.offsetWidth;\n },\n isRTL: function () {\n return window.getComputedStyle(_this.root).getPropertyValue('direction') === 'rtl';\n },\n setActiveTab: function (index) {\n return _this.foundation.activateTab(index);\n },\n activateTabAtIndex: function (index, clientRect) {\n return _this.tabList_[index].activate(clientRect);\n },\n deactivateTabAtIndex: function (index) {\n return _this.tabList_[index].deactivate();\n },\n focusTabAtIndex: function (index) {\n return _this.tabList_[index].focus();\n },\n getTabIndicatorClientRectAtIndex: function (index) {\n return _this.tabList_[index].computeIndicatorClientRect();\n },\n getTabDimensionsAtIndex: function (index) {\n return _this.tabList_[index].computeDimensions();\n },\n getPreviousActiveTabIndex: function () {\n for (var i = 0; i < _this.tabList_.length; i++) {\n if (_this.tabList_[i].active) {\n return i;\n }\n }\n\n return -1;\n },\n getFocusedTabIndex: function () {\n var tabElements = _this.getTabElements_();\n\n var activeElement = document.activeElement;\n return tabElements.indexOf(activeElement);\n },\n getIndexOfTabById: function (id) {\n for (var i = 0; i < _this.tabList_.length; i++) {\n if (_this.tabList_[i].id === id) {\n return i;\n }\n }\n\n return -1;\n },\n getTabListLength: function () {\n return _this.tabList_.length;\n },\n notifyTabActivated: function (index) {\n return _this.emit(strings.TAB_ACTIVATED_EVENT, {\n index: index\n }, true);\n }\n }; // tslint:enable:object-literal-sort-keys\n\n return new MDCTabBarFoundation(adapter);\n };\n /**\n * Activates the tab at the given index\n * @param index The index of the tab\n */\n\n\n MDCTabBar.prototype.activateTab = function (index) {\n this.foundation.activateTab(index);\n };\n /**\n * Scrolls the tab at the given index into view\n * @param index THe index of the tab\n */\n\n\n MDCTabBar.prototype.scrollIntoView = function (index) {\n this.foundation.scrollIntoView(index);\n };\n /**\n * Returns all the tab elements in a nice clean array\n */\n\n\n MDCTabBar.prototype.getTabElements_ = function () {\n return [].slice.call(this.root.querySelectorAll(strings.TAB_SELECTOR));\n };\n /**\n * Instantiates tab components on all child tab elements\n */\n\n\n MDCTabBar.prototype.instantiateTabs_ = function (tabFactory) {\n return this.getTabElements_().map(function (el) {\n el.id = el.id || \"mdc-tab-\" + ++tabIdCounter;\n return tabFactory(el);\n });\n };\n /**\n * Instantiates tab scroller component on the child tab scroller element\n */\n\n\n MDCTabBar.prototype.instantiateTabScroller_ = function (tabScrollerFactory) {\n var tabScrollerElement = this.root.querySelector(strings.TAB_SCROLLER_SELECTOR);\n\n if (tabScrollerElement) {\n return tabScrollerFactory(tabScrollerElement);\n }\n\n return null;\n };\n\n return MDCTabBar;\n}(MDCComponent);\n\nexport { MDCTabBar };","import {params_with_csrf_token} from 'utils/form_utils'\n\nprepare_banner = ->\n banner = document.querySelector('.banner')\n resendEmail = document.querySelector('.banner .resend-confirmation-email')\n if resendEmail\n resendEmail.addEventListener 'click', (e) ->\n e.preventDefault()\n banner.classList.add('loading')\n resend_confirmation_email()\n\nresend_confirmation_email = ->\n banner = document.querySelector('.banner')\n fetch('/users/send_confirmation_email', body: params_with_csrf_token(), method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) ->\n banner.classList.remove('loading')\n response.json().then (json) ->\n if json.success\n close_banner()\n else\n banner.classList.add('failed')\n document.querySelector('.banner .message').innerText = json.error\n\nexport close_banner = ->\n banner = document.querySelector('.banner')\n if banner\n banner.classList.add('success', 'closed')\n setTimeout (-> banner.remove()), 400\n\nprepare_banner()","/* eslint no-console:0 */\n// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n//\n// To reference this file, add <%= javascript_pack_tag 'application' %> to the appropriate\n// layout file, like app/views/layouts/application.html.erb\n\n\n// Uncomment to copy all static images under ../images to the output folder and reference\n// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)\n// or the `imagePath` JavaScript helper below.\n//\n// const images = require.context('../images', true)\n// const imagePath = (name) => images(name, true)\nrequire('components/dianomi');\nrequire('components/layout');\nrequire('components/lazy_load_images');\nrequire('articles_search');\nrequire('accuracy');\nrequire('notifications');\nrequire('dashboard');\nrequire('payment');\nrequire('components/lazy_load_trustpilot');\nrequire('generator/generator');\nrequire('begin_free_trial');\nrequire('emoji_fixes');\nrequire('components/banner');\nrequire('components/flash');\nrequire('components/gdpr_cookie_notice');\nrequire('components/setup_form_elements');\nrequire('register');\nrequire('login');\nrequire('password_reset');\nif (document.getElementById('request-company') != null) require('request_add_company');\nif (document.getElementById('declared-dividends') != null) require('declared_dividends');\nif (document.getElementById('company-coverage') != null) require('company_coverage');\nif (document.getElementById('new_inquiry') != null) require('inquiries');\nif (document.getElementById('my-account') != null) require('my_account');\nif (document.getElementById('countdown') != null) require('tools/countdown');\nif (document.getElementById('set-password') != null) require('set_password');\nif (document.getElementById('new-password') != null) require('new_password');\nif (document.querySelector('body#optimizer') != null) require('tools/optimizer');","import {MDCTextField} from '@material/textfield'\n\nel = document.querySelector('#search')\nnew MDCTextField(el.parentElement) if el","import {Chart, LinearScale, BarElement, BarController, CategoryScale, Title, Tooltip} from 'chart.js'\n\nChart.register(LinearScale, BarElement, BarController, CategoryScale, Title, Tooltip)\n\ncolumnFromTable = (table_id, column) ->\n vals = []\n vals.push(el.innerText) for el in document.querySelectorAll(\"table##{table_id} tbody td:nth-child(#{column})\")\n vals\n\ntableLabels = -> columnFromTable('prediction-counts', 1)\naccuracyValues = -> columnFromTable('prediction-counts', 2)\n\nbuildProjectionsChart = ->\n chart = new Chart(document.querySelector('canvas#projections-graph'), {\n type: 'bar'\n data: {\n labels: tableLabels()\n datasets: [{\n label: 'Dividend Projection Accuracy'\n data: accuracyValues()\n backgroundColor: \"rgba(72,193,240,1)\"\n borderColor: \"rgba(37,164,215,1)\"\n borderWidth: 1\n fill: false\n }]\n },\n options: {\n legend:\n onClick: (e) => e.stopPropogation()\n scales: {\n yAxes: [{\n ticks: {\n callback: (value, index, values) -> \"#{value}%\"\n }\n }]\n }\n }\n })\n\nbuildProjectionsChart() if document.querySelector('canvas#projections-graph')","import {MDCList} from '@material/list'\nimport {MDCTextField} from '@material/textfield'\nimport {CompanySearch} from 'components/company_search'\nimport {FlashMessage} from 'components/flash'\nimport {SelectedSecuritiesList} from 'components/selected_securities_list'\nimport {scroll_to_element} from 'utils/scroller'\nimport {params_with_csrf_token} from 'utils/form_utils'\nimport {close_banner} from 'components/banner'\nimport {User} from 'utils/user'\nimport {PopupMessage} from 'components/popup_message'\nimport {element_with_class, element_with_content, link_button} from 'utils/material_elements'\nimport {generate_recaptcha_token} from 'utils/form_utils'\n\nexport class NotificationsTable\n\n constructor: ->\n @prepare()\n\n prepare: ->\n @selectedList = new SelectedSecuritiesList('#watchlist', this)\n @prepareSearch()\n @preparePopular()\n @prepareButtons()\n @prepareSignupForm() unless User.isLoggedIn()\n @errorBox = document.querySelector('#content .error-message')\n\n preparePopular: ->\n @popularList = new MDCList(document.querySelector('#popular'))\n @popularList.listen 'MDCList:action', (action) =>\n item = @popularList.listElements[action.detail.index]\n\n @addNotificationRow item.dataset\n item.classList.add 'fadeout'\n setTimeout (=> item.remove()), 500\n \n prepareSearch: ->\n new CompanySearch('notifications-search', false, false, (selection) => @addNotification(selection.value))\n\n addNotification: (row) ->\n data =\n id: row.id\n image: row.image\n name: \"(#{row.ticker}) #{row.name}\"\n @addNotificationRow(data)\n document.querySelector('#notifications-search-box').value = ''\n\n addNotificationRow: (data) ->\n security = document.querySelector(\"#watchlist .security-#{data.id}\")\n document.querySelector('.destination-list').classList.add 'shown'\n unless security\n security = @selectedList.addSecurity(data)\n\n @scrollToWatchListSecurity(security)\n @showSaveButton()\n\n scrollToWatchListSecurity: (security) ->\n @selectedList.securitySelected(security.dataset.id)\n scroll_to_element \".security-#{security.dataset.id}\"\n\n prepareButtons: ->\n document.querySelector('.save-notifications').addEventListener 'click', (e) =>\n e.preventDefault()\n @saveButtonClicked()\n\n document.querySelector('.copy-to-portfolio').addEventListener 'click', (e) =>\n e.preventDefault()\n @copyToPortfolioButtonClicked()\n\n saveButtonClicked: ->\n if !User.isLoggedIn()\n if @isUserFormVisible()\n @validateAndSubmitUserForm()\n else\n @displayUserForm()\n scroll_to_element '#sign-up-form'\n else if @validateAgreeToNotifications()\n @submitWatchlistForm()\n\n isUserFormVisible: -> @form.classList.contains 'open'\n displayUserForm: -> @form.classList.add 'open'\n\n hideUserForm: ->\n if @form\n @form.classList.remove 'open'\n setTimeout (=> @form.remove()), 500\n document.location = \"/signup/success?email=#{@email_field.value}\"\n \n validateAndSubmitUserForm: ->\n if @validateUserForm()\n @submitUserForm()\n\n validateUserForm: ->\n document.querySelector('.agree-to-notifications').classList.remove 'error'\n document.querySelector('.agree-to-terms').classList.remove 'error'\n\n if @email_field.value.length == 0 or !@email_field.valid\n @email_field.valid = false\n @errorBox.innerText = \"Please enter a valid email address\"\n return false\n if @password_field.value.length == 0 or !@password_field.valid\n @password_field.valid = false\n @errorBox.innerText = \"Please enter a valid password with at least 6 characters\"\n return false\n\n return false unless @validateAgreeToTerms()\n @validateAgreeToNotifications()\n\n validateAgreeToNotifications: ->\n return true unless document.querySelector('.agree-to-notifications')\n document.querySelector('.agree-to-notifications').classList.remove 'error'\n if !document.querySelector('.agree-to-notifications input[type=checkbox]').checked\n @errorBox.innerText = \"You must agree to receive dividend email notifications\"\n document.querySelector('.agree-to-notifications').classList.add 'error'\n return false\n true\n\n validateAgreeToTerms: ->\n document.querySelector('.agree-to-terms').classList.remove 'error'\n if !document.querySelector('#user_agree_to_terms').checked\n @errorBox.innerText = \"You must agree to the Terms and Conditions and Privacy Policy\"\n document.querySelector('.agree-to-terms').classList.add 'error'\n return false\n true\n\n submitUserForm: ->\n generate_recaptcha_token => @submitForm('/users', @userFormData())\n\n submitWatchlistForm: ->\n @submitForm '/watch_lists', @watchlistFormData()\n\n submitForm: (path, body) ->\n @loadingIcon or= document.querySelector '.loading-icon'\n @loadingIcon.classList.add 'on'\n @doneIcon or= document.querySelector '.done-icon'\n @doneIcon.classList.remove 'fade', 'on'\n if @errorBox\n @errorBox.innerHTML = \"\"\n\n fetch(path, method: 'POST', body: body, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) => @handlePostResponse(response)\n\n handlePostResponse: (response) ->\n @loadingIcon.classList.remove 'on'\n response.json().then (json) =>\n if json.success\n @doneIcon.classList.add 'on'\n setTimeout (=> @doneIcon.classList.add('fade')), 100\n setTimeout (=> @doneIcon.classList.remove('on')), 1100\n @hideUserForm()\n FlashMessage.success(\"Your notification watchlist has been saved successfully\")\n @updateTextWithCounts()\n @hideSaveButton()\n close_banner()\n else\n @errorBox.innerHTML = json.error\n\n userFormData: ->\n params = @watchlistFormData()\n @addParam params, '#user_email'\n @addParam params, '#user_password'\n @addParam params, '#user_user_type'\n @addParam params, '#user_agree_to_terms'\n @addParam params, '#user_email_subscription_attributes_notification_emails'\n @addParam params, '#recaptcha_token'\n params\n\n addParam: (params, field_id) ->\n field = document.querySelector(field_id)\n params.append field.name, field.value\n\n watchlistFormData: ->\n params = params_with_csrf_token()\n @addNotificationCheckboxParams(params)\n for row, i in document.querySelectorAll('#watchlist .security')\n param = if User.isLoggedIn() then \"shares[#{i}][id]\" else \"user[shares[#{i}][id]]\"\n params.append(param, row.dataset.id)\n param = if User.isLoggedIn() then \"shares[#{i}][quantity]\" else \"user[shares[#{i}][quantity]]\"\n params.append(param, row.querySelector('input').value)\n params\n\n addNotificationCheckboxParams: (params) ->\n input = document.querySelector('#notification_emails')\n if input and input.checked\n params.append('email_subscription[notification_emails]', '1')\n label = document.querySelector('.agree-to-notifications label')\n params.append('email_subscription[notification_emails_text]', label.innerText)\n\n updateTextWithCounts: ->\n count = document.querySelectorAll('#watchlist li').length\n title = document.querySelector('#notifications_title')\n title.innerText = \"#{count} notification#{if count is 1 then \"\" else \"s\"}\"\n\n para = document.querySelector('#notifications_paragraph')\n text = \"You have #{count} email notification#{if count is 1 then \"\" else \"s\"}. \"\n if count is 0\n text += \"Select a company to receive an email when they declare a dividend.\"\n else\n text += \"You will receive an email when these companies declare a dividend.\"\n para.innerText = text\n\n prepareSignupForm: ->\n @form = document.querySelector '#sign-up-form'\n @email_field = new MDCTextField(document.querySelector('#user_email').parentElement)\n @password_field = new MDCTextField(document.querySelector('#user_password').parentElement)\n\n showSaveButton: ->\n document.querySelector('.save-notifications').classList.remove 'hidden'\n document.querySelector('.copy-to-portfolio').classList.add 'hidden'\n\n hideSaveButton: -> \n document.querySelector('.save-notifications').classList.add 'hidden'\n if document.querySelectorAll('#watchlist .security').length > 0\n document.querySelector('.copy-to-portfolio').classList.remove 'hidden'\n\n selectedSecuritiesUpdated: -> # called from SelectedSecuritiesList\n @showSaveButton()\n\n copyToPortfolioButtonClicked: ->\n if User.hasActiveSubscription()\n popup = PopupMessage.confirm(\"Copy Notifications To A Portfolio?\", \"This will create a portfolio called \\\"My Notifications\\\" in the Generator. Do you want to continue?\")\n popup.listen 'MDCDialog:closed', (event) =>\n @copyToPortfolio(popup) if event.detail.action == 'accept'\n else if User.isExpired()\n @showAccountExpiredPopup()\n else if User.isLoggedIn()\n @showActivateSubscriptionPopup()\n\n showAccountExpiredPopup: ->\n message = element_with_content('div', 'Your DividendMax subscription has expired so you do not have access to create a portfolio.')\n message.append element_with_content('p', link_button('Extend Subscription', '/payments/new', true, true))\n\n div = document.createElement('div')\n div.append element_with_content('h2', 'Subscription Expired', 'mdc-dialog__title') \n div.append element_with_content('div', message, 'mdc-dialog__content')\n\n PopupMessage.showPopup(div, PopupMessage.okButton())\n\n showActivateSubscriptionPopup: ->\n message = element_with_content('div', 'To create a portfolio you need to activate your DividendMax subscription.')\n message.append element_with_content('p', link_button('Begin Free Trial', '/begin-free-trial', true, true))\n\n div = document.createElement('div')\n div.append element_with_content('h2', 'DividendMax Subscription Required', 'mdc-dialog__title') \n div.append element_with_content('div', message, 'mdc-dialog__content')\n\n PopupMessage.showPopup(div, PopupMessage.okButton())\n\n copyToPortfolio: (popup) ->\n path = \"/dividends/notifications/create_portfolio\"\n fetch(path, method: 'POST', body: params_with_csrf_token(), headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) ->\n response.json().then (json) ->\n if json.success\n FlashMessage.success \"Your portfolio is being created now. Click Generator to see it.\"\n popup.close()\n else\n FlashMessage.error \"Unable to create portfolio: #{json.error}\"\n popup.close()\n\nnew NotificationsTable() if document.querySelector('body').id is 'notifications'","import {StripeCreditCardForm} from './stripe_payment_form'\n\nif document.body.id == 'payment' and document.querySelector('#interval_1')\n\n form = document.querySelector('.stripe-credit-card')\n\n selectedInterval = ->\n if document.querySelector('#interval_1').checked then 1 else 2\n\n paymentOptionSelected = ->\n if selectedInterval() is 1\n form.querySelector('.option1').classList.remove('hidden')\n form.querySelector('.option2').classList.add('hidden')\n else\n form.querySelector('.option1').classList.add('hidden')\n form.querySelector('.option2').classList.remove('hidden')\n cc.interval = selectedInterval()\n\n document.querySelector('#interval_1').addEventListener 'change', -> paymentOptionSelected()\n document.querySelector('#interval_2').addEventListener 'change', -> paymentOptionSelected()\n\n cc = new StripeCreditCardForm(false)\n\n document.querySelector('a.paypal-icon').addEventListener 'click', (e) -> \n e.preventDefault()\n document.querySelector('.paypal-buttons').classList.add('shown')","\nprepare_form = ->\n button = document.querySelector('form .buttons button')\n document.querySelector('#agree_to_terms').addEventListener 'click', ->\n button.removeAttribute('disabled')\n\nprepare_form() if document.body.getAttribute('id') == 'begin-free-trial'\n","import {EmojiFallback} from 'utils/emoji_fallback'\n\nemoji = new EmojiFallback()\n\nif document.body.getAttribute('id') == 'market-index'\n emoji.replaceInElement document.querySelector('#content .table-container')\n","import {MDCNotchedOutline} from '@material/notched-outline';\nimport {MDCCheckbox} from '@material/checkbox';\n\ntry {\n for (let el of document.querySelectorAll('.mdc-notched-outline')) {\n new MDCNotchedOutline(el);\n } \n} catch (e) { }\n\nfor (let el of document.querySelectorAll('.mdc-checkbox')) {\n new MDCCheckbox(el);\n}","import {MDCTextField} from '@material/textfield'\nimport {MDCCheckbox} from '@material/checkbox'\nimport {MDCTextFieldHelperText} from '@material/textfield/helper-text'\nimport {generate_recaptcha_token} from 'utils/form_utils'\n\nexport class RegisterForm\n\n constructor: ->\n @prepare() if document.querySelector('body').id is 'signup'\n\n prepare: ->\n @addCheckBoxListeners()\n @prepareTextFields()\n @prepareForm()\n\n addCheckBoxListeners: ->\n @prepareCheckbox(box) for box in ['user_agree_to_terms', 'user_type_free_trial', 'user_email_subscription_attributes_notification_emails', 'user_email_subscription_attributes_friday_emails']\n\n prepareCheckbox: (id) ->\n i = document.getElementById(id)\n i.addEventListener 'click', => @checkBoxClicked(id)\n i\n\n checkBoxClicked: (id) ->\n document.getElementById('user_user_type').value = switch\n when @isFreeTrialChecked() then 7\n when @isNotificationEmailsChecked() then 8\n when @isFridayEmailsChecked() then 9\n else null\n\n prepareTextFields: ->\n @emailField = @prepareTextField 'user_email'\n @passwordField = @prepareTextField 'user_password'\n\n prepareTextField: (id) ->\n el = document.getElementById(id)\n el.addEventListener 'keyup', (e) => @textBoxKeyPress(e)\n new MDCTextField(el.parentElement)\n\n textBoxKeyPress: (e) ->\n if e.target.dataset and e.target.dataset.submittedvalue\n valid = e.target.value != e.target.dataset.submittedvalue\n @emailField.valid = valid\n if e.keyCode == 13\n @submitForm(e)\n else\n document.querySelector('form#new_user button[type=submit]').disabled = document.getElementById('user_email').value.length == 0 or document.getElementById('user_password').value.length == 0\n\n prepareForm: ->\n document.getElementById('user_email_subscription_attributes_friday_emails_text').value = document.querySelector('.friday-emails label').innerText\n document.getElementById('user_email_subscription_attributes_notification_emails_text').value = document.querySelector('.notifications label').innerText\n document.getElementById('new_user').addEventListener 'submit', (e) => @submitForm(e)\n\n submitForm: (e) ->\n e.preventDefault()\n @removeAllErrors()\n email = document.getElementById('user_email')\n email.value = email.value.replace(/\\s+/gm,'')\n\n if !@isAgreeToTermsChecked()\n @showError '.agree-to-terms', 'To use this service you must agree to the privacy policy and service terms and conditions'\n else if @noOptionSelected()\n @showError '.free-trial', 'You must select at least one sign up option'\n else\n document.getElementById('submit-button').disabled = true\n generate_recaptcha_token -> document.getElementById('new_user').submit()\n\n removeAllErrors: ->\n el.remove() for el in document.querySelectorAll('form#new_user .checkbox-error')\n\n noOptionSelected: ->\n not @isNotificationEmailsChecked() and not @isFridayEmailsChecked() and not @isFreeTrialChecked()\n\n showError: (div, msg) ->\n @removeAllErrors()\n outer = document.createElement('div')\n outer.classList.add('mdc-text-field-helper-line', 'checkbox-error')\n inner = document.createElement('div')\n inner.classList.add('mdc-text-field-helper-text', 'mdc-text-field-helper-text--validation-msg')\n inner.innerText = msg\n outer.append inner\n box = document.querySelector(\"#{div} label\")\n box.append outer\n\n isAgreeToTermsChecked: -> document.getElementById('user_agree_to_terms').checked\n isNotificationEmailsChecked: -> document.getElementById('user_email_subscription_attributes_notification_emails').checked\n isFridayEmailsChecked: -> document.getElementById('user_email_subscription_attributes_friday_emails').checked\n isFreeTrialChecked: -> document.getElementById('user_type_free_trial').checked\n\nnew RegisterForm()\n","import {MDCTextField} from '@material/textfield'\nimport {generate_recaptcha_token} from 'utils/form_utils'\n\nexport class LoginForm\n\n constructor: ->\n @prepare() if document.querySelector('body').id is 'login'\n\n prepare: ->\n @prepareFormSubmit()\n @emailField = @prepareTextField 'user_session_email'\n @passwordField = @prepareTextField 'user_session_password'\n @setSubmitButtonDisabledState()\n\n prepareFormSubmit: ->\n button = document.querySelector('form#new_user_session button[type=submit]')\n button.addEventListener 'click', (e) => @triggerFormSubmit(e)\n\n triggerFormSubmit: (e) ->\n e.preventDefault()\n button = document.querySelector('form#new_user_session button[type=submit]')\n unless button.disabled\n button.disabled = true\n generate_recaptcha_token -> document.querySelector('form#new_user_session').submit()\n\n prepareTextField: (id) ->\n el = document.getElementById(id)\n el.addEventListener 'keyup', (e) => @textBoxKeyPress(e)\n el.addEventListener 'change', (e) => @setSubmitButtonDisabledState()\n el.addEventListener 'paste', (e) => @setSubmitButtonDisabledState()\n new MDCTextField(el.parentElement.parentElement)\n\n textBoxKeyPress: (e) ->\n if e.keyCode == 13\n @triggerFormSubmit(e)\n else\n @setSubmitButtonDisabledState()\n\n setSubmitButtonDisabledState: ->\n disabled = document.getElementById('user_session_email').value.length == 0 or document.getElementById('user_session_password').value.length == 0\n document.querySelector('form#new_user_session button[type=submit]').disabled = disabled\n\nnew LoginForm()\n","import {MDCTextField} from '@material/textfield'\nimport {generate_recaptcha_token} from 'utils/form_utils'\n\nexport class PasswordResetForm\n\n constructor: ->\n @recaptchaLoading = false\n @prepare() if document.querySelector('body').id is 'password-reset'\n\n prepare: ->\n @emailField = @prepareTextField 'email_address'\n @prepareSubmitButton()\n\n prepareTextField: (id) ->\n el = document.getElementById(id)\n el.addEventListener 'keyup', (e) => @textBoxKeyPress(e)\n new MDCTextField(el.parentElement.parentElement)\n\n textBoxKeyPress: (e) ->\n disabled = @recaptchaLoading or document.getElementById('email_address').value.length == 0\n document.querySelector('#content form button[type=submit]').disabled = disabled\n\n prepareSubmitButton: ->\n button = document.querySelector('form#password-reset button.perform-recaptcha')\n button.addEventListener 'click', (e) ->\n e.preventDefault()\n @recaptchaLoading = true\n button.disabled = true\n generate_recaptcha_token -> document.querySelector('form#password-reset').submit()\n\nnew PasswordResetForm()","import {MDCTextField} from '@material/textfield'\n\nexport class RequestAddCompanyForm\n\n constructor: ->\n @prepare() if document.querySelector('body').id is 'request-company'\n\n prepare: ->\n new MDCTextField(document.querySelector('label.ticker_input'))\n new MDCTextField(document.querySelector('label.name_input'))\n new MDCTextField(document.querySelector('label.country_input'))\n new MDCTextField(document.querySelector('label.note_input'))\n\nnew RequestAddCompanyForm()","import {MDCMenu} from '@material/menu'\nimport {EmojiFallback} from 'utils/emoji_fallback'\n\nclass CompanyCoverageTable\n\n constructor: ->\n @selectedSector = null\n @selectedCountry = null\n @prepareFilterMenus()\n @emoji = new EmojiFallback()\n @emoji.run()\n\n prepareFilterMenus: ->\n @sectorsMenuLink = document.querySelector('#open-sector-filter-menu')\n @countriesMenuLink = document.querySelector('#open-country-filter-menu')\n \n @countriesMenuLink.classList.add('active') if @selectedCountry\n @sectorsMenuLink.classList.add('active') if @selectedSector\n\n @sectorsMenu = new MDCMenu(document.querySelector('#sector-menu'))\n @sectorsMenu.setFixedPosition true\n @sectorsMenu.listen 'MDCMenu:selected', (event) =>\n @selectedSector = event.detail.item.dataset.id or null\n @applyFilters()\n\n @countriesMenu = new MDCMenu(document.querySelector('#country-menu'))\n @countriesMenu.setFixedPosition true\n @countriesMenu.listen 'MDCMenu:selected', (event) =>\n @selectedCountry = event.detail.item.dataset.id or null\n @applyFilters()\n\n @countriesMenuLink.addEventListener 'click', (e) => \n e.preventDefault()\n @countriesMenu.open = true\n\n @sectorsMenuLink.addEventListener 'click', (e) => \n e.preventDefault()\n @sectorsMenu.open = true\n\n applyFilters: ->\n fetch(@path(), @headers()).then (source) => (source.text()).then (text) => \n @setTableContent(text)\n @prepareFilterMenus()\n @emoji.run()\n\n setTableContent: (source) ->\n document.querySelector('#c').innerHTML = source\n\n headers: ->\n headers:\n 'X-Requested-With': 'XMLHttpRequest'\n\n path: ->\n \"/company-dividend-coverage?country=#{@selectedCountry}§or=#{@selectedSector}\"\n\nnew CompanyCoverageTable()","import {MDCTextField} from '@material/textfield'\nimport {generate_recaptcha_token} from 'utils/form_utils'\n\nnew MDCTextField(el) for el in document.querySelectorAll('form#new_inquiry .mdc-text-field')\n\ndocument.querySelector('form#new_inquiry').addEventListener 'submit', (e) ->\n e.preventDefault()\n generate_recaptcha_token -> document.querySelector('form#new_inquiry').submit()","import {MDCTextField} from '@material/textfield'\nimport {params_with_csrf_token} from './utils/form_utils'\nimport {StripeCreditCardForm} from './stripe_payment_form'\nimport {FlashMessage} from './components/flash'\n\nexport class MyAccount\n\n constructor: ->\n new MDCTextField(el) for el in document.querySelectorAll('.mdc-text-field')\n @prepareButtons()\n @prepareStripe()\n\n prepareButtons: ->\n @addShowButtonListener(a) for a in document.querySelectorAll('.hide-until-shown button.show')\n @addCancelButtonListener(a) for a in document.querySelectorAll('.hide-until-shown button.cancel-button')\n @prepareDeactivateButton()\n\n prepareDeactivateButton: ->\n button = document.querySelector('a.deactivate-button')\n button.addEventListener 'click', (e) => @deactivateAccount(e, button.getAttribute('href'))\n\n deactivateAccount: (e, url) ->\n e.preventDefault()\n fetch(url, method: 'POST', body: params_with_csrf_token(), headers: @headers()).then => @accountDeactivated()\n\n accountDeactivated: ->\n FlashMessage.success \"Account deactivated successfully. You have been logged out\"\n setTimeout (-> document.location = \"/\"), 2000\n\n headers: ->\n {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}\n\n addShowButtonListener: (button) ->\n button.addEventListener 'click', (e) => @revealFormClicked(e) \n\n revealFormClicked: (e) ->\n @modalContainer(e).classList.add 'visible'\n\n addCancelButtonListener: (button) ->\n button.addEventListener 'click', (e) => @cancelButtonClicked(e)\n \n cancelButtonClicked: (e) ->\n @modalContainer(e).classList.remove 'visible'\n @form.clearForm()\n\n modalContainer: (event) ->\n event.preventDefault()\n target = event.target\n target = target.parentElement while !target.classList.contains('hide-until-shown')\n target\n\n prepareStripe: ->\n @form = new StripeCreditCardForm(true, (status) => @creditCardUpdated(status))\n\n creditCardUpdated: (card) ->\n document.querySelector('#subscription-details .card-type').innerText = @titleize(card.brand)\n document.querySelector('#subscription-details .card-expiry').innerText = @cardExpiry(card)\n document.querySelector('#subscription-details .card-last4').innerText = card.last4\n \n MONTHS = [0, 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n \n cardExpiry: (card) ->\n \"#{MONTHS[card.exp_month]} #{card.exp_year}\"\n\n titleize: (brand) ->\n brand[0].toUpperCase() + brand.substring(1,brand.length)\n\nnew MyAccount()","import {MDCSelect} from '@material/select'\nimport {EmojiFallback} from 'utils/emoji_fallback'\nimport {element_with_content, element_with_class} from 'utils/material_elements'\nimport {Tool} from 'tools/tool'\nimport {CookieManager} from 'utils/cookie_manager'\n\nclass Countdown extends Tool\n constructor: ->\n @week = 0\n @sort = 0\n @table = document.querySelector('table#countdown.tool tbody')\n if @table != null\n @prepareCountdown()\n\n prepareCountdown: ->\n @emoji = new EmojiFallback()\n @prepareSelectOptions()\n @prepareNavigationButtons()\n @prepareTable()\n @dateValue = document.querySelector('#date-label')\n @runCountdownQuery()\n @emoji.run()\n\n prepareTable: ->\n @prepareSortButton button for button in document.querySelectorAll('table#countdown a.sort')\n\n prepareSortButton: (button) ->\n button.addEventListener 'click', (e) =>\n e.preventDefault()\n unless button.classList.contains('active')\n b.classList.remove('active') for b in document.querySelectorAll('table#countdown a.sort')\n @sort = button.dataset.sort\n button.classList.add('active')\n @runCountdownQuery()\n\n prepareNavigationButtons: ->\n @prevButton = document.querySelector('.nav-buttons button.prev.week')\n @prevButton.addEventListener 'click', (e) =>\n e.preventDefault()\n if @week > -1\n @week -= 1\n @runCountdownQuery()\n @setNavigationButtonStatus()\n\n @nextButton = document.querySelector('.nav-buttons button.next.week')\n @nextButton.addEventListener 'click', (e) =>\n e.preventDefault()\n if @week < 12\n @week += 1\n @runCountdownQuery()\n @setNavigationButtonStatus()\n\n setNavigationButtonStatus: ->\n if @week <= -1\n @prevButton.setAttribute('disabled', 'disabled')\n else \n @prevButton.removeAttribute('disabled')\n if @week > 11\n @nextButton.setAttribute('disabled', 'disabled')\n else\n @nextButton.removeAttribute('disabled')\n\n prepareSelectOptions: ->\n @countrySelect = @prepareSelect('country')\n @indexSelect = @prepareSelect('index')\n @sectorSelect = @prepareSelect('sector')\n\n @emoji.replaceInElement(document.querySelector('#country-select'))\n\n prepareSelect: (name) ->\n select = new MDCSelect(document.querySelector(\"##{name}-select\"))\n index = CookieManager.get(\"countdown_#{name}_index\")\n select.selectedIndex = parseInt(index) if index\n select.listen 'MDCSelect:change', =>\n CookieManager.set(\"countdown_#{name}_index\", select.selectedIndex)\n if select.selectedIndex > 0\n CookieManager.set(\"countdown_#{name}_value\", select.value)\n else\n CookieManager.remove(\"countdown_#{name}_value\")\n @runCountdownQuery()\n select\n\n runCountdownQuery: ->\n fetch(@queryUrl(), headers: {'X-Requested-With': 'XMLHttpRequest'}).then (response) => @handleResponse(response)\n\n queryUrl: ->\n url = \"/tools/countdown?week=#{@week}&sort=#{@sort}\"\n url = \"#{url}&country=#{@countrySelect.value}\" if @countrySelect.selectedIndex > 0\n url = \"#{url}&index=#{@indexSelect.value}\" if @indexSelect.selectedIndex > 0\n url = \"#{url}§or=#{@sectorSelect.value}\" if @sectorSelect.selectedIndex > 0\n url\n\n handleResponse: (response) ->\n response.json().then (json) =>\n @table.removeChild(@table.firstChild) while @table.firstChild\n @addRow(row) for row in json.dividends\n @addEmptyRow() if json.dividends.length == 0\n @dateValue.innerText = json.date\n\n addEmptyRow: ->\n tr = document.createElement('TR')\n tr.classList.add('mdc-data-table__row')\n td = @tableCell('None')\n td.classList.add 'none'\n td.setAttribute('colspan', 8)\n tr.append(td)\n @table.append tr\n\n addRow: (row) ->\n tr = document.createElement('TR')\n tr.classList.add('mdc-data-table__row')\n tr.append @nameCell(row)\n tr.append @tickerCell(row)\n tr.append @tableCell(row.p)\n tr.append @amountCell(row)\n tr.append @tableCell(row.r)\n tr.append @tableCell(row.t)\n tr.append @tableCell(row.x)\n tr.append @tableCell(row.a)\n @table.append tr\n\n nameCell: (row) ->\n return @tableCellLink(row.n, row.u) if row.n\n @placeholderCell()\n\n tickerCell: (row) ->\n @tableCell(row.k or '-')\n\n amountCell: (row) ->\n td = @tableCell(row.m)\n td.append element_with_content('span', 'est', 'estimate') if row.s is 3\n td\n\nnew Countdown()","import {MDCTextField} from '@material/textfield'\n\nnew MDCTextField(document.getElementById('password').parentElement)","import {element_with_class, element_with_content, material_select, material_select_option} from 'utils/material_elements'\nimport {MDCSelect} from '@material/select'\nimport {link_button} from 'utils/material_elements'\nimport {scroll_to_element} from 'utils/scroller'\nimport {MoneyFormat} from 'utils/money_format'\n\nexport class GeneratorTab\n\n constructor: (@id, @parent) ->\n @tab = document.querySelector('#portfolio-data')\n @reload()\n\n reload: ->\n @emptyTab()\n @showLoadingAnimation()\n @load()\n\n emptyTab: ->\n @tab.removeChild(@tab.firstChild) while @tab.firstChild\n\n scrollToContent: -> scroll_to_element('.tab-tab-tab')\n\n showLoadingAnimation: ->\n @tab.append element_with_content('div', @loadingAnimation(), 'mdc-layout-grid__cell--span-12', 'loading-cell')\n\n loadingAnimation: ->\n element_with_content('div', element_with_content('div', '', 'material-icons', 'loading-icon', 'on'), 'loading-icon-wrap')\n\n setPortfolioValue: (portfolio) ->\n card = document.querySelector(\".portfolio-#{portfolio.id}\")\n card.querySelector('.mv').innerText = MoneyFormat.format(portfolio.val, portfolio.currency.code)\n\n value = card.querySelector('.value .mdc-typography--body2')\n icon = card.querySelector('.value .material-icons')\n icon.classList.remove('up', 'down')\n if portfolio.val_p\n icon.classList.add(if portfolio.val_p < 0 then 'down' else 'up')\n icon.innerHTML = if portfolio.val_p < 0 then '' else ''\n value.innerText = \"#{portfolio.val_p}%\"\n else\n value.innerText = \"\"\n\n notLoggedIn: ->\n div = element_with_content('div', element_with_content('div', 'Not logged in', 'mdc-typography--headline5'), 'not-logged-in')\n div.append element_with_content('p', 'You need to be logged in to use the Generator', 'mdc-typography--subtitle1')\n div.append @loginSignupButtons()\n div\n\n freeAccount: ->\n div = element_with_content('div', element_with_content('div', 'You don\\'t have access to the Generator', 'mdc-typography--headline5'), 'not-logged-in')\n div.append element_with_content('p', 'You must activate your free DividendMax trial to access all the tools', 'mdc-typography--subtitle1')\n div.append @activateAccountButton()\n div\n\n emailNotVerified: ->\n div = element_with_content('div', element_with_content('div', 'Verify your email address', 'mdc-typography--headline5'), 'not-logged-in')\n div.append element_with_content('p', 'You need to click the link in the verification email we sent you to access the Generator', 'mdc-typography--subtitle1')\n div\n\n accountExpired: ->\n div = element_with_content('div', element_with_content('div', 'Your account has expired', 'mdc-typography--headline5'), 'not-logged-in')\n div.append element_with_content('p', 'You must renew your subscription to continue using DividendMax', 'mdc-typography--subtitle1')\n div.append @paymentButton()\n div\n\n paymentButton: ->\n element_with_content('div', link_button('Pay for DividendMax', '/payments/new', true, false, false), 'buttons')\n\n activateAccountButton: ->\n element_with_content('div', link_button('Activate Free Trial', '/begin-free-trial', true, true, false), 'buttons')\n\n loginSignupButtons: ->\n div = element_with_class('div', 'buttons')\n div.append link_button('Create Account', '/signup', true, false, false)\n div.append link_button('Log In', '/login', false, false, true)\n div\n\n currencyInput: ->\n @currency_select = material_select('Currency')\n @currency = new MDCSelect(@currency_select)\n @downloadCurrencies (currencies) => @buildCurrencyOptions(currencies)\n element_with_content('div', @currency_select, 'input', 'currency-select-input')\n\n downloadCurrencies: (callback) ->\n fetch(\"/currencies.json\").then (response) ->\n response.json().then (json) -> callback(json.currencies)\n\n buildCurrencyOptions: (currencies) ->\n @addCurrencyOption currency, i for currency, i in currencies\n @currency.listen 'MDCSelect:change', => @currencySelected()\n\n addCurrencyOption: (currency, index) ->\n list = @currency_select.querySelector('ul.mdc-list')\n option = material_select_option(\"#{currency.name} (#{currency.unit})\", currency.id, @isSelectedCurrency(currency))\n option.dataset.unit = currency.unit\n option.dataset.code = currency.code\n list.append option\n @currency.selectedIndex = index if @isSelectedCurrency(currency)\n\n isSelectedCurrency: (currency) ->\n return @transaction.curr.id == currency.id if @transaction and @transaction.curr\n if @portfolioCurrency then currency.id == @portfolioCurrency.id else currency.code is 'GBP'\n\n currencySelected: ->\n document.querySelector('.currency-symbol').innerText = @selectedCurrencyField('unit')\n\n selectCurrencyOption: (id) ->\n for option, i in @currency_select.querySelectorAll('li')\n @currency.selectedIndex = i if option.dataset.value == id.toString()\n\n selectedCurrencyField: (field) ->\n option = @currency_select.querySelectorAll('li')[@currency.selectedIndex]\n option.dataset[field]\n\n showErrors: (errors) ->\n div = document.querySelector('#form-errors')\n div.remove() if div\n div = element_with_class('div', 'error-message')\n div.setAttribute('id', 'form-errors')\n div.append element_with_content('div', msg, 'error') for msg in errors\n form = document.querySelector('#portfolio-data form.material-form')\n form.insertBefore(div, document.querySelector('#portfolio-data form.material-form .buttons'))","import {form_params} from 'utils/form_utils'\nimport {GeneratorTab} from 'generator/generator_tab'\n\nexport class PortfolioForm extends GeneratorTab\n\n portfolioFormParameters: ->\n params = form_params('form.portfolio-form')\n params.append 'portfolio[currency_id]', @currency.value\n params","import * as material from 'utils/material_elements'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {form_params, form_element, hidden_field} from 'utils/form_utils'\nimport {PortfolioForm} from 'generator/portfolio_form'\nimport {CookieManager} from 'utils/cookie_manager'\nimport {MDCTextField} from '@material/textfield'\nimport {MoneyFormat} from 'utils/money_format'\nimport {FlashMessage} from 'components/flash'\nimport {PopupMessage} from 'components/popup_message'\n\nexport class ModifyPortfolioForm extends PortfolioForm\n\n constructor: (@portfolio, @parent) ->\n @portfolioCurrency = @portfolio.currency\n super(null, @parent)\n\n load: ->\n @emptyTab()\n @tab.append @grid()\n @scrollToContent()\n\n grid: ->\n div = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n div.append @title()\n div.append @paragraph()\n div.append @form()\n div\n\n title: ->\n element_with_content 'h2', 'Edit Portfolio', 'mdc-typography--headline5'\n\n paragraph: ->\n element_with_content 'p', \"Optionally set an opening balance for the portfolio to track your cash position.\", 'mdc-typography--subtitle1'\n\n form: ->\n form = form_element(\"/portfolios/#{@portfolio.id}\", 'POST', 'edit_portfolio')\n form.classList.add('material-form', 'portfolio-form')\n form.append hidden_field('portfolio[id]', @portfolio.id)\n form.append hidden_field('_method', 'patch')\n form.append @nameInput()\n form.append @balanceInput()\n form.append @currencyInput()\n form.append @buttons()\n form\n\n nameInput: ->\n input = material.text_field('Portfolio name', 'portfolio[name]', @portfolio.name)\n @name = new MDCTextField(input)\n element_with_content('div', input, 'input')\n\n balanceInput: ->\n input = material.money_input_field('Opening balance', 'portfolio[opening_balance]', MoneyFormat.formatForInput(@portfolio.ob), @portfolioCurrency.unit)\n @balance = new MDCTextField(input)\n element_with_content('div', input, 'input')\n\n buttons: ->\n div = element_with_class('div', 'buttons')\n div.append @submitButton()\n div.append @cancelButton()\n div\n\n submitButton: ->\n @submit_button = material.submit_button('Update portfolio', true)\n @submit_button.addEventListener 'click', (e) => @submitClicked(e)\n @submit_button\n\n submitClicked: (e) ->\n e.preventDefault()\n @submit_button.setAttribute('disabled', true)\n if @currencyHasChanged()\n @showChangeCurrencyMessage()\n else\n @submitForm()\n\n showChangeCurrencyMessage: ->\n dialog = PopupMessage.alert(\"Note: changing currency applies the best exchange rate available.\\n\\nThis takes a few minutes to complete.\")\n dialog.listen 'MDCDialog:closed', (event) => @submitForm()\n\n currencyHasChanged: ->\n @portfolioCurrency.id != parseInt(@currency.value)\n\n submitForm: ->\n fetch(\"/portfolios/#{@portfolio.id}\", method: 'POST', body: @portfolioFormParameters(), headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) => @receiveResponse(response)\n\n cancelButton: ->\n button = material.link_button('Cancel', '/portfolios')\n button.addEventListener 'click', (e) => @cancelClicked(e)\n button\n\n cancelClicked: (e) ->\n e.preventDefault()\n @parent.reload()\n\n receiveResponse: (response) ->\n response.json().then (json) => @processResponse(json)\n\n processResponse: (data) ->\n if data.errors\n FlashMessage.error(\"Unable to save portfolio\")\n @showErrors(data.errors)\n @submit_button.removeAttribute('disabled')\n else\n if @currencyHasChanged()\n FlashMessage.success(\"Please wait... portfolio is updating\")\n else\n FlashMessage.success(\"Portfolio saved successfully\")\n @parent.load()\n\n showErrors: (errors) ->\n div = document.querySelector('#form-errors')\n div.remove() if div\n div = element_with_class('div', 'error-message')\n div.setAttribute('id', 'form-errors')\n div.append element_with_content('span', msg, 'error') for msg in errors\n form = document.querySelector('form#edit_portfolio')\n form.appendChild div","import {MDCMenu} from '@material/menu'\nimport {element_with_class, element_with_content} from '../utils/material_elements'\nimport {params_with_csrf_token} from '../utils/form_utils'\nimport {User} from 'utils/user'\nimport {CookieManager} from '../utils/cookie_manager'\nimport {PopupMessage} from 'components/popup_message'\nimport {ModifyPortfolioForm} from 'generator/modify_portfolio_form'\nimport {GeneratorTab} from 'generator/generator_tab'\nimport {FlashMessage} from 'components/flash'\nimport {PercentFormat} from 'utils/percent_format'\nimport {MoneyFormat} from 'utils/money_format'\nimport {Chart, ArcElement, PieController, LinearScale, Title, Tooltip} from 'chart.js'\n\nChart.register(PieController, ArcElement, LinearScale, Title, Tooltip)\n\nexport class GeneratorOverview extends GeneratorTab\n \n load: ->\n fetch(\"/portfolios/#{@id}.json\").then (response) => response.json().then (json) => @buildPage(json)\n\n buildPage: (@portfolio) ->\n @emptyTab()\n @addTabContent()\n @prepareMenu() if @portfolio.can_edit\n @renderChart('weighting', \"Holdings\", @portfolio.wl, @portfolio.wv)\n @renderChart('sectors', \"Sector Weightings\", @portfolio.sl, @portfolio.sv)\n @setPortfolioValue(@portfolio)\n\n addTabContent: ->\n @addPortfolioTitle()\n @addNumberBoxes()\n @addCashPerformance()\n @addPieCharts()\n\n addPortfolioTitle: ->\n div = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n wrapper = element_with_content('div', @portfolioTitle(), 'title-with-icon')\n wrapper.append @menuAndIcon() if @portfolio.can_edit\n wrapper.append @hideIcon() if @shouldShowHideIcon()\n div.append wrapper\n @tab.append div\n\n portfolioTitle: ->\n element_with_content('h2', @portfolio.name, 'mdc-typography--headline5')\n\n addNumberBoxes: ->\n @tab.append @numberBox('Current Value', @portfolio.val, @portfolio.val_p)\n @tab.append @numberBox('Capital Gain', @portfolio.cap_gain, @portfolio.cap_gain_p)\n @tab.append @numberBox('Total Dividends', @portfolio.dividends, @portfolio.dividends_p)\n @tab.append @numberBox('Total Gain', @portfolio.total_gain, @portfolio.total_gain_p)\n\n numberBox: (label, value, percent) ->\n box = element_with_class('div', 'mdc-card', 'number-box', 'value-card')\n box.append element_with_content('div', label, 'mdc-typography--overline', 'mdc-theme--secondary')\n box.append element_with_content('div', MoneyFormat.format(value, @portfolio.currency.code), 'mdc-typography--headline5')\n box.append @numberBoxPercent(percent)\n element_with_content('div', box, 'mdc-layout-grid__cell--span-3-desktop', 'mdc-layout-grid__cell--span-4-phone', 'mdc-layout-grid__cell--span-4-tablet')\n\n numberBoxPercent: (percent) ->\n div = element_with_class('div', 'value')\n if percent and percent != '0'\n icon = if percent < 0 then '' else ''\n class2 = if percent < 0 then 'down' else 'up'\n div.append element_with_content('span', icon, 'material-icons', class2)\n div.append element_with_content('div', \"#{percent}%\", 'mdc-typography--body2')\n div\n\n addCashPerformance: ->\n box = element_with_class('div', 'mdc-card', 'cash-performance')\n box.append element_with_content('div', 'Cash Performance', 'mdc-typography--overline', 'mdc-theme--secondary')\n box.append @performanceRow('Opening Balance', @portfolio.ob, true)\n box.append @performanceRow('Total Purchases', @portfolio.purchases)\n box.append @performanceRow('Total Sales', @portfolio.sales)\n box.append @performanceRow('Deposits', @portfolio.deposits)\n box.append @performanceRow('Withdrawals', @portfolio.withdrawals)\n box.append @performanceRow('Dividends', @portfolio.dividends)\n box.append @performanceRow('Current Balance', @portfolio.balance)\n @tab.append element_with_content('div', box, 'mdc-layout-grid__cell--span-6-desktop', 'mdc-layout-grid__cell--span-4-phone', 'mdc-layout-grid__cell--span-8-tablet')\n\n performanceRow: (label, value, setNowLinkIfNull) ->\n row = element_with_class('div', 'row', 'mdc-typography--body2')\n row.append element_with_content('label', label)\n span = element_with_content('span', if value? then MoneyFormat.format(value, @portfolio.currency.code) else 'Not set')\n span.append(@setBalanceButton()) if setNowLinkIfNull and !value?\n row.append span\n row\n\n setBalanceButton: ->\n link = element_with_content('a', 'Set now', 'set-balance-button')\n link.setAttribute('href', '#')\n link.addEventListener 'click', (e) =>\n e.preventDefault()\n @showModifyPortfolioForm()\n link\n\n addPieCharts: ->\n box = element_with_class('div', 'mdc-card', 'pie-charts')\n box.append @buildChartCanvas('Holdings', 'weighting')\n box.append @buildChartCanvas('Sector Weightings', 'sectors')\n @tab.append element_with_content('div', box, 'mdc-layout-grid__cell--span-6-desktop', 'mdc-layout-grid__cell--span-4-phone', 'mdc-layout-grid__cell--span-8-tablet')\n\n buildChartCanvas: (label, id) ->\n div = element_with_class('div', 'chart')\n div.append(element_with_content('div', label, 'mdc-typography--overline', 'mdc-theme--secondary'))\n div.append(@canvasWithId(id))\n div\n\n canvasWithId: (id) ->\n canvas = document.createElement('CANVAS')\n canvas.setAttribute('id', id)\n element_with_content('div', canvas, 'chart-wrapper')\n\n renderChart: (id, title, labels, values) ->\n colors = ['#ee1125', '#222eee', '#e210b4', '#00b5de', '#08ca5e', '#cac412', '#ca123c', '#ac6fbb', '#482f86', '#081188', '#6ab3ff', '#6af8ff', '#6affa6', '#faffbe', '#98cc68', '#5a4a1a', '#562604', '#560804','#ee1125', '#222eee', '#e210b4', '#00b5de', '#08ca5e', '#cac412', '#ca123c', '#ac6fbb', '#482f86', '#081188', '#6ab3ff', '#6af8ff', '#6affa6', '#faffbe', '#98cc68', '#5a4a1a', '#562604', '#560804','#ee1125', '#222eee', '#e210b4', '#00b5de', '#08ca5e', '#cac412', '#ca123c', '#ac6fbb', '#482f86', '#081188', '#6ab3ff', '#6af8ff', '#6affa6', '#faffbe', '#98cc68', '#5a4a1a', '#562604', '#560804']\n currency_unit = @portfolio.currency.unit\n data = {\n datasets: [{data: values, backgroundColor: colors}],\n labels: labels\n }\n options = {\n legend:\n display: false\n responsive: true\n maintainAspectRatio: false\n plugins:\n tooltip:\n enabled: false\n position: 'nearest'\n external: (context) ->\n tooltipEl = context.chart.canvas.parentNode.querySelector('.external-tooltip')\n if !tooltipEl\n tooltipEl = element_with_class('div', 'external-tooltip', 'mdc-typography--body2')\n tooltipEl.appendChild element_with_class('span', 'label')\n tooltipEl.appendChild element_with_class('span', 'value')\n context.chart.canvas.parentNode.appendChild(tooltipEl)\n tooltipItem = context.tooltip.dataPoints[0]\n if context.tooltip.opacity == 0\n tooltipEl.classList.add 'hidden'\n else\n tooltipEl.classList.remove 'hidden'\n values = tooltipItem.dataset.data\n amount = parseFloat(values[tooltipItem.dataIndex])\n amount = if amount > 10000 then \"#{Math.round(amount/1000)}k\" else \"#{Math.round(amount)}\" \n tooltipEl.querySelector('.label').innerText = tooltipItem.label\n tooltipEl.querySelector('.value').innerText = \"#{currency_unit}#{amount} (#{PercentFormat.calculatePercentage(values, tooltipItem.dataIndex)})\"\n }\n new Chart(document.getElementById(id), type: 'pie', data: data, options: options)\n\n shouldShowHideIcon: ->\n @portfolio.id is 8 and User.isEmailVerified() and document.querySelectorAll('.portfolio-tiles .mdc-card').length > 1\n\n hideIcon: ->\n icon = element_with_content('div', '', 'material-icons')\n icon.addEventListener 'click', => @showConfirmHidePortfolio()\n icon\n\n showConfirmHidePortfolio: ->\n dialog = PopupMessage.confirm(\"Hide demo portfolio?\", \"The DividendMax Trading Portfolio is provided as a demonstration. Click Yes to remove it from your Generator view.\")\n dialog.listen 'MDCDialog:closed', (event) =>\n @hideDemoPortfolio() if event.detail.action == 'accept'\n\n hideDemoPortfolio: ->\n params = params_with_csrf_token()\n params.append('setting', 'hide_demo_portfolio')\n params.append('value', 'true')\n fetch(\"/user_settings\", method: 'POST', body: params, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then =>\n FlashMessage.success(\"#{@portfolio.name} Hidden Successfully\")\n CookieManager.remove(\"portfolio\")\n location.reload()\n\n menuAndIcon: ->\n el = element_with_class('div', 'mdc-menu-surface--anchor')\n el.append @menuIcon()\n el.append @menuElement()\n el\n\n menuIcon: ->\n icon = element_with_content('div', '', 'material-icons')\n icon.addEventListener 'click', => @menu.open = !@menu.open\n icon\n\n menuElement: ->\n element_with_content('div', @menuItems(), 'mdc-menu', 'mdc-menu-surface')\n\n menuItems: ->\n ul = element_with_class('ul', 'mdc-list')\n ul.setAttribute('role', 'menu')\n ul.setAttribute('aria-hidden', true)\n ul.setAttribute('aria-orientation', 'vertical')\n ul.setAttribute('tabindex', -1)\n ul.append @menuItem('Edit portfolio', 1)\n ul.append @menuItem('Delete portfolio', 2)\n ul \n\n menuItem: (label, tabindex) ->\n li = element_with_content('li', element_with_content('span', label, 'mdc-list-item__text'), 'mdc-list-item')\n li.setAttribute('role', 'menuitem')\n li.setAttribute('tabindex', tabindex)\n li\n\n prepareMenu: ->\n @menu = new MDCMenu(document.querySelector('.mdc-menu'))\n @menu.listen 'MDCMenu:selected', (event) =>\n if event.detail.index is 0\n @showModifyPortfolioForm()\n else\n @deletePortfolioClicked()\n\n showModifyPortfolioForm: ->\n new ModifyPortfolioForm(@portfolio, this)\n\n deletePortfolioClicked: ->\n dialog = PopupMessage.confirm(\"Delete portfolio\", \"Are you sure you want to delete the portfolio #{@portfolio.name} and all transactions and holdings? This cannot be reversed\")\n dialog.listen 'MDCDialog:closed', (event) =>\n @deletePortfolio() if event.detail.action == 'accept'\n\n deletePortfolio: ->\n params = params_with_csrf_token()\n params.append('_method', 'DELETE')\n fetch(\"/portfolios/#{@id}\", method: 'POST', body: params, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then =>\n FlashMessage.success(\"#{@portfolio.name} Removed Successfully\")\n CookieManager.remove(\"portfolio\")\n location.reload()","import * as material from 'utils/material_elements'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {MDCTabBar} from '@material/tab-bar'\nimport {User} from 'utils/user'\nimport {PopupMessage} from 'components/popup_message'\nimport {GeneratorOverview} from 'generator/overview'\nimport {CookieManager} from 'utils/cookie_manager'\nimport {NewPortfolioForm} from 'generator/new_portfolio_form'\nimport {Holdings} from 'generator/holdings'\nimport {FutureIncome} from 'generator/future_income'\nimport {Transactions} from 'generator/transactions'\nimport {MoneyFormat} from 'utils/money_format'\n\nclass Generator\n\n constructor: ->\n @id = document.querySelector('#portfolio-data').dataset.portfolio\n @activeTab = @whatIsActiveTab()\n @prepareButtons()\n @prepareTabs()\n @preparePortfolios()\n\n whatIsActiveTab: ->\n switch document.location.hash\n when '#holdings' then 1\n when '#income' then 2\n when '#transactions' then 3\n else 0\n\n prepareButtons: ->\n document.querySelector('.add-portfolio').addEventListener 'click', => @addPortfolioButtonClicked()\n\n addPortfolioButtonClicked: ->\n new NewPortfolioForm(this)\n\n preparePortfolios: ->\n @preparePortfolio(portfolio) for portfolio in document.querySelectorAll('.portfolio-tiles .mdc-card') \n\n preparePortfolio: (portfolio) ->\n portfolio.addEventListener 'click', (e) => @portfolioClicked(portfolio)\n\n portfolioClicked: (portfolio) ->\n if @canAccessPortfolios()\n @setPortfolioActive(portfolio)\n CookieManager.set('portfolio', @id)\n @loadSelectedTab()\n else\n @showRestrictionPopup()\n\n canAccessPortfolios: -> User.isEmailVerified() and !User.isExpired()\n\n showRestrictionPopup: ->\n message = \"You need to click the link in the verification email we sent you to access the Generator\"\n message = \"Your subscription has expired. You need to pay for DividendMax to continue using the Generator\" if User.isExpired()\n PopupMessage.alert(message)\n\n addPortfolioToList: (data) ->\n card = @portfolioCard(data)\n document.querySelector('.portfolio-tiles').prepend(card)\n @preparePortfolio(card)\n @setPortfolioActive(card)\n card\n\n portfolioCard: (data) ->\n card = material.element_with_class('div', 'mdc-card', 'mdc-elevation--z10', 'value-card', \"portfolio-#{data.id}\")\n card.dataset.id = data.id\n inner = element_with_class('div', 'mdc-card__primary-action')\n inner.append element_with_content('div', data.name, 'mdc-typography--body2', 'name')\n inner.append element_with_content('div', MoneyFormat.format(data.ob), 'mdc-typography--headline5', 'mv')\n value = element_with_class('div', 'value')\n value.append element_with_class('span', 'material-icons')\n value.append element_with_class('div', 'mdc-typography--body2')\n inner.append value\n card.append inner\n card\n\n setPortfolioActive: (portfolio) ->\n @id = portfolio.dataset.id\n p.classList.remove('active') for p in document.querySelectorAll('.portfolio-tiles .mdc-card')\n portfolio.classList.add 'active'\n\n prepareTabs: ->\n tabBar = new MDCTabBar(document.querySelector('.tab-tab-tab .mdc-tab-bar'))\n tabBar.listen 'MDCTabBar:activated', (event) => @generatorTabClicked(event.detail.index)\n tabBar.activateTab @activeTab\n @loadTab()\n\n generatorTabClicked: (tab) ->\n if @activeTab != tab\n @activeTab = tab\n @loadSelectedTab()\n\n loadTab: ->\n if document.location.hash is '#new'\n @loadNewPortfolio()\n else\n @loadSelectedTab()\n\n loadSelectedTab: ->\n switch @activeTab\n when 0 then @loadOverview()\n when 1 then @loadHoldings()\n when 2 then @loadFutureIncome()\n when 3 then @loadTransactions()\n\n loadOverview: ->\n @navigateTo '#'\n new GeneratorOverview(@id, this)\n\n loadHoldings: ->\n @navigateTo '#holdings'\n new Holdings(@id, this)\n\n loadFutureIncome: ->\n @navigateTo '#income'\n new FutureIncome(@id, this)\n\n loadTransactions: ->\n @navigateTo '#transactions'\n new Transactions(@id, this, @currencies)\n\n loadNewPortfolio: ->\n new NewPortfolioForm(this)\n\n navigateTo: (hash) ->\n if history.pushState\n history.pushState(null, null, hash)\n else\n location.hash = hash\n\nif document.body.id == 'portfolios'\n new Generator()","import {element_with_class, element_with_content} from 'utils/material_elements'\n\nexport class MenuBuilder\n\n constructor: (items...) ->\n @items = items\n\n build: ->\n element_with_content('div', @ul(), 'mdc-menu', 'mdc-menu-surface')\n\n ul: ->\n ul = element_with_class('ul', 'mdc-list')\n ul.setAttribute('role', 'menu')\n ul.setAttribute('aria-orientation', 'vertical')\n ul.append @li(item) for item in @items\n ul\n\n li: (label) ->\n li = element_with_content('li', @span(label), 'mdc-list-item')\n li.setAttribute('role', 'menuitem')\n li\n\n span: (label) ->\n element_with_content('span', label, 'mdc-list-item__text')","import {CompanySearch} from 'components/company_search'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {form_element} from 'utils/form_utils'\n\nexport class CompanySearchForm\n\n constructor: (@includeHoldings) ->\n\n form: ->\n form = form_element('#', 'GET', 'company-search')\n form.classList.add 'security-search-form'\n form.append @securitySearchInput()\n form\n\n prepareSearch: (callback) ->\n new CompanySearch('company-search', @includeHoldings, false, (selection) =>\n @input.value = selection.value.name\n callback(selection.value))\n\n securitySearchInput: ->\n el = element_with_class('label', 'mdc-text-field', 'mdc-text-field--with-trailing-icon', 'mdc-text-field--outlined')\n @input = element_with_class('input', 'mdc-text-field__input', 'degradation-placeholder')\n @input.setAttribute('aria-labelledby', 'company-search-input')\n @input.setAttribute('type', 'text')\n @input.setAttribute('name', 'search')\n @input.setAttribute('autocomplete', 'off')\n @input.setAttribute('id', 'company-search-box')\n el.append @input\n el.append element_with_content('span', 'search', 'material-icons', 'mdc-text-field__icon', 'mdc-text-field__icon--trailing')\n outline = element_with_class('div', 'mdc-notched-outline')\n outline.append element_with_class('div', 'mdc-notched-outline__leading')\n span = element_with_content('span', 'Search for a company', 'mdc-floating-label')\n span.setAttribute('id', 'company-search-input')\n outline.append element_with_content('div', span, 'mdc-notched-outline__notch')\n outline.append element_with_class('div', 'mdc-notched-outline__trailing')\n el.append outline\n el\n","import * as material from 'utils/material_elements'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {params_with_csrf_token} from 'utils/form_utils'\nimport {scroll_to_element} from 'utils/scroller'\nimport {MDCTextField} from '@material/textfield'\nimport {MDCList} from '@material/list'\nimport {MDCMenu} from '@material/menu'\nimport {GeneratorTab} from 'generator/generator_tab'\nimport {SelectedSecuritiesList} from 'components/selected_securities_list'\nimport {SecurityListItem} from 'components/security_list_item'\nimport {PopupMessage} from 'components/popup_message'\nimport {InfiniteScroll} from 'utils/infinite_scroll'\nimport {MenuBuilder} from 'components/menu_builder'\nimport {CompanySearchForm} from 'components/company_search_form'\n\nexport class AddHoldingForm extends GeneratorTab\n \n constructor: (@id, @parent, @addingToNewPortfolio) ->\n super(@id, @parent)\n\n load: ->\n @emptyTab()\n @buildTabContent()\n @selectedList = new SelectedSecuritiesList('.selected-securities') \n @downloadHoldings()\n @search.prepareSearch((value) => @addSelectedSearchResult(value))\n\n downloadHoldings: ->\n if @addingToNewPortfolio\n @existing = []\n else\n fetch(\"portfolios/#{@id}/holdings.json\").then (response) => @receiveHoldings(response)\n\n receiveHoldings: (response) ->\n response.json().then (json) =>\n @existing = json.holdings.map (holding) -> holding.share_id\n\n addSecurities: (securities) ->\n @addSecurity(security) for security in securities\n\n addSecurity: (security) ->\n @popularList.root.append(@securityListItem(security)) \n\n securityListItem: (security) ->\n item = new SecurityListItem(security)\n item.html()\n\n buildTabContent: ->\n @appendTitleCell()\n @appendSelectedListCell()\n @appendSecuritiesListCell()\n new InfiniteScroll(\"/shares.json?portfolio=#{@id}\", this)\n\n appendTitleCell: ->\n div = element_with_content('div', @title(), 'mdc-layout-grid__cell--span-12')\n div.append @paragraph()\n @tab.append div\n\n title: ->\n element_with_content 'h2', 'New Portfolio', 'mdc-typography--headline5'\n\n paragraph: ->\n element_with_content 'p', \"Select the companies to add to your portfolio.\", 'mdc-typography--subtitle1'\n\n appendSelectedListCell: ->\n @destination = element_with_class('div', 'mdc-layout-grid__cell--span-4-phone', 'mdc-layout-grid__cell--span-4-tablet', 'mdc-layout-grid__cell--span-6-desktop', 'destination-list')\n @destination.append @selectedSecurityMenu()\n @destination.append element_with_content('div', 'Holdings', 'mdc-typography--overline', 'mdc-theme--secondary')\n empty = element_with_content('div', 'Choose a company to add to your portfolio', 'empty')\n @destination.append element_with_content('ul', empty, 'mdc-list', 'mdc-list--two-line', 'mdc-list--avatar-list', 'selected-securities', 'selected-security-list')\n @destination.append @buttons()\n @tab.append @destination\n\n buttons: ->\n div = element_with_class('div', 'buttons')\n div.append @submitButton()\n div.append @cancelButton()\n div\n\n submitButton: ->\n @button = material.submit_button('Add To Portfolio', true)\n @button.setAttribute('disabled', true)\n @button.addEventListener 'click', (e) => @submitButtonClicked()\n @button\n\n cancelButton: ->\n label = if @addingToNewPortfolio then 'Skip this step' else 'Cancel'\n button = material.submit_button(label)\n button.addEventListener 'click', (e) => @parent.formComplete()\n button\n\n appendSecuritiesListCell: ->\n div = element_with_class('div', 'mdc-layout-grid__cell--span-4-phone', 'mdc-layout-grid__cell--span-4-tablet', 'mdc-layout-grid__cell--span-6-desktop')\n @tab.append div\n div.append element_with_content('div', 'Select companies to add', 'mdc-typography--overline', 'mdc-theme--secondary')\n div.append @securitySearchForm()\n @appendPopularSecuritiesList(div)\n\n securitySearchForm: ->\n @search = new CompanySearchForm(false)\n @search.form()\n\n addSelectedSearchResult: (row) ->\n @securitySelected(row)\n document.querySelector('#company-search-box').value = ''\n\n appendPopularSecuritiesList: (div) ->\n ul = element_with_class('ul', 'mdc-list', 'mdc-list--avatar-list', 'source-securities-list', 'infinite-scroll-container')\n div.append ul\n @popularList = new MDCList(ul)\n @popularList.listen 'MDCList:action', (action) =>\n @securitySelected @popularList.listElements[action.detail.index].dataset\n\n dataReceived: (securities) ->\n @addSecurities securities\n\n securitySelected: (security) ->\n return if @checkNotExistingHolding(security)\n\n @destination.classList.add 'shown'\n row = document.querySelector(\".selected-securities .security-#{security.id}\")\n unless row\n row = @selectedList.addSecurity(security)\n @button.removeAttribute('disabled')\n @scrollToSelectedSecurity(row)\n\n checkNotExistingHolding: (security) ->\n if @existing.indexOf(parseInt(security.id)) > -1\n PopupMessage.alert(\"#{security.name} is already in your portfolio\")\n return true\n false\n\n scrollToSelectedSecurity: (security) ->\n @selectedList.securitySelected(security.dataset.id)\n scroll_to_element \".security-#{security.dataset.id}\"\n\n selectedSecurityMenu: ->\n builder = new MenuBuilder('Modify', 'Remove')\n builder.build()\n\n prepareRow: (element) ->\n element.addEventListener 'click', (e) => @selectedSecurityRowClicked(element, e.clientX, e.clientY)\n\n selectedSecurityRowClicked: (element, x, y) ->\n @menu.setAbsolutePosition(x, y)\n @selectedRow = element\n @menu.open = !@menu.open\n false\n\n submitButtonClicked: ->\n params = params_with_csrf_token()\n @addQuantityToParams(params, security, i) for security, i in document.querySelectorAll('.selected-securities li.security')\n\n fetch(\"/portfolios/#{@id}/holdings\", method: 'POST', body: params, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) =>\n @parent.formComplete()\n\n addQuantityToParams: (params, security, i) ->\n params.append(\"holdings[][share_id]\", security.dataset.id) \n params.append(\"holdings[][quantity]\", security.querySelector('input').value)","import * as material from 'utils/material_elements'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {CookieManager} from 'utils/cookie_manager'\nimport {AddHoldingForm} from 'generator/add_holding_form'\nimport {PortfolioForm} from 'generator/portfolio_form'\nimport {MDCTextField} from '@material/textfield'\nimport {MDCTextFieldHelperText} from '@material/textfield/helper-text'\nimport {FlashMessage} from 'components/flash'\nimport {User} from 'utils/user'\n\nexport class NewPortfolioForm extends PortfolioForm\n\n constructor: (@parent) ->\n super(null, @parent)\n\n load: ->\n @emptyTab()\n @tab.append @grid()\n @scrollToContent()\n\n grid: ->\n div = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n if User.isLoggedIn()\n if User.isExpired()\n div.append @accountExpired()\n else if User.isFreeAccount()\n div.append @freeAccount()\n else if User.isEmailVerified()\n div.append @title()\n div.append @paragraph()\n div.append @form()\n else\n div.append @emailNotVerified()\n else\n div.append @notLoggedIn()\n div\n\n title: ->\n element_with_content 'h2', 'New Portfolio', 'mdc-typography--headline5'\n\n paragraph: ->\n element_with_content 'p', \"Use porfolios to group your share holdings and track their performance independently.\", 'mdc-typography--subtitle1'\n\n form: ->\n form = element_with_class('form', 'material-form', 'portfolio-form')\n form.setAttribute(\"method\", 'POST')\n form.setAttribute(\"action\", \"/portfolios\")\n form.setAttribute('id', 'new_portfolio')\n form.append @nameInput()\n form.append @balanceInput()\n form.append @currencyInput()\n form.append @buttons()\n form\n\n nameInput: ->\n input = material.text_field('Portfolio name', 'portfolio[name]', @defaultPortfolioName())\n @name = new MDCTextField(input)\n element_with_content('div', input, 'input')\n\n defaultPortfolioName: ->\n name = document.body.dataset.userName\n if name == undefined or name.trim() == \"\" then \"My Portfolio\" else \"#{name}'s Portfolio\"\n\n balanceInput: ->\n input = material.money_input_field('Opening balance', 'portfolio[balance]', '', '£')\n @balance = new MDCTextField(input)\n div = element_with_content('div', input, 'input')\n helper = element_with_content('div', 'Optional', 'mdc-text-field-helper-text')\n div.append element_with_content('div', helper, 'mdc-text-field-helper-line')\n helperText = new MDCTextFieldHelperText(helper)\n helperText.foundation.setPersistent true\n div\n\n buttons: ->\n div = element_with_class('div', 'buttons')\n div.append @submitButton()\n div.append @cancelButton()\n div\n\n submitButton: ->\n button = material.submit_button('Create portfolio', true)\n button.addEventListener 'click', (e) => @submitClicked(e)\n button\n\n submitClicked: (e) ->\n e.preventDefault()\n fetch('/portfolios', method: 'POST', body: @portfolioFormParameters(), headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) => @receiveResponse(response)\n\n cancelButton: ->\n button = material.link_button('Cancel', '/portfolios')\n button.addEventListener 'click', (e) => @cancelClicked(e)\n button\n\n cancelClicked: (e) ->\n e.preventDefault()\n @parent.loadSelectedTab()\n\n receiveResponse: (response) ->\n response.json().then (json) => @processResponse(json)\n\n processResponse: (data) ->\n if data.errors\n FlashMessage.error(\"Unable to create portfolio\")\n @showErrors(data.errors)\n else\n @id = data.id\n CookieManager.set('portfolio', @id)\n FlashMessage.success(\"Portfolio created successfully\")\n @card = @parent.addPortfolioToList(data)\n new AddHoldingForm(@id, this, true)\n\n showErrors: (errors) ->\n div = document.querySelector('#form-errors')\n div.remove() if div\n div = element_with_class('div', 'error-message')\n div.setAttribute('id', 'form-errors')\n div.append element_with_content('span', msg, 'error') for msg in errors\n form = document.querySelector('form#new_portfolio')\n form.appendChild div\n\n # the AddHoldingForm has returned\n formComplete: ->\n @parent.portfolioClicked(@card)\n","import {GeneratorTab} from 'generator/generator_tab'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {MDCTextField} from '@material/textfield'\nimport {form_element, form_params} from 'utils/form_utils'\nimport * as material from 'utils/material_elements'\nimport {MoneyFormat} from 'utils/money_format'\nimport {FlashMessage} from 'components/flash'\n\nexport class ModifyHoldingForm extends GeneratorTab\n \n constructor: (@holding, @portfolio, @parent) ->\n super @portfolio.id, @parent\n\n load: ->\n @emptyTab()\n @buildContent()\n @scrollToContent()\n\n buildContent: ->\n div = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n @tab.append div\n div.append @title()\n div.append @subtitle()\n @addForm(div)\n div\n\n title: -> element_with_content 'h1', 'Modify Holding', 'mdc-typography--headline2'\n subtitle: -> element_with_content 'h3', \"#{@holding.share} (#{@holding.ticker})\", 'mdc-typography--headline6'\n\n addForm: (div) ->\n form = form_element(@formUrl(), 'POST', 'modify-holding-form')\n form.classList.add 'material-form'\n div.append form\n form.append @cannotModifyMessage() unless @holding.no_trans\n @quantityInput(form)\n @outlayOrAveragePriceInput(form)\n @dividendsReceivedInput(form)\n @currentValueBox(form)\n @buttons(form)\n\n formUrl: -> \"/portfolios/#{@portfolio.id}/holdings/#{@holding.id}\"\n\n cannotModifyMessage: ->\n element_with_content('div', \"Cannot update this holding: values are determined by the transactions\", 'notice')\n\n quantityInput: (form) ->\n input = @formInput(\"Quantity Held\", 'holding[quantity]', @holding.quantity, false, => @quantityUpdated())\n form.append element_with_content('div', input, 'input')\n @quantity = new MDCTextField(input)\n\n outlayOrAveragePriceInput: (form) ->\n div = element_with_class('div', 'input', 'multi-input')\n form.append div\n div.append @outlayInput()\n div.append element_with_content('div', 'or', 'or')\n div.append @averagePriceInput()\n\n outlayInput: ->\n input = @formInput(\"Outlay (#{@portfolio.currency.unit})\", 'holding[cumulative_outlay]', @holding.toutlay, true, => @outlayUpdated())\n @outlay = new MDCTextField(input)\n input\n\n averagePriceInput: ->\n input = @formInput(\"Average Price (#{@portfolio.currency.unit})\", 'holding[cumulative_average_price]', @holding.tavg_price, true, (e) => @averagePriceUpdated(e))\n @average = new MDCTextField(input)\n input\n\n dividendsReceivedInput: (form) ->\n input = @formInput(\"Dividends Received (#{@portfolio.currency.unit})\", 'holding[cumulative_dividends]', @holding.tdivs_rec, true)\n form.append element_with_content('div', input, 'input')\n @dividends = new MDCTextField(input)\n\n currentValueBox: (form) ->\n box = element_with_class('div', 'mdc-card', 'padded-card', 'value-card')\n form.append box\n box.append element_with_content('div', 'Current Value', 'mdc-typography--overline', 'mdc-theme--secondary')\n @currentValue = element_with_class('div', 'mdc-typography--headline5')\n @setCurrentValue()\n box.append @currentValue\n\n formInput: (label, name, value, isMoney, onclick) ->\n value = MoneyFormat.stripNonNumerics(value)\n value = MoneyFormat.formatForInput(value) if isMoney\n label = material.text_field(label, name, value)\n label.querySelector('input').addEventListener('keyup', onclick) if onclick\n label\n\n buttons: (form) ->\n div = element_with_class('div', 'buttons')\n form.append div\n div.append @submitButton() if @holding.no_trans\n div.append @cancelButton()\n\n submitButton: ->\n button = material.submit_button('Update holding', true)\n button.addEventListener 'click', (e) => @submitClicked(e)\n button\n\n submitClicked: (e) ->\n e.preventDefault()\n fetch(@formUrl(), method: 'POST', body: @formParams(), headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) => @receiveResponse(response)\n\n formParams: ->\n params = form_params('#modify-holding-form')\n params.append '_method', 'PATCH'\n params.append 'holding[id]', @holding.id\n params\n\n cancelButton: ->\n button = material.link_button('Cancel', '/portfolios')\n button.addEventListener 'click', (e) => @cancelClicked(e)\n button\n\n cancelClicked: (e) ->\n e.preventDefault()\n @parent.load()\n\n receiveResponse: (response) ->\n response.json().then (json) => @processResponse(json)\n\n processResponse: (data) ->\n if data.errors\n FlashMessage.error(\"Unable to save holding\")\n @showErrors(data.errors)\n else\n FlashMessage.success(\"Holding saved successfully\")\n @parent.load()\n\n quantityUpdated: ->\n @setCurrentValue()\n @outlayUpdated()\n\n setCurrentValue: ->\n quantity = parseInt(@quantity.value)\n if isNaN(quantity)\n @currentValue.innerText = \"\"\n else\n total = quantity * parseFloat(@holding.pr_lo)\n @currentValue.innerText = MoneyFormat.format(total, @portfolio.currency.code)\n\n outlayUpdated: ->\n quantity = parseInt(@quantity.value)\n outlay = parseFloat(@outlay.value)\n if !isNaN(quantity) and !isNaN(outlay) and quantity > 0\n @average.value = MoneyFormat.roundTo(outlay / quantity, 8)\n\n averagePriceUpdated: (e) ->\n unless e.keyCode is 9\n quantity = parseInt(@quantity.value)\n avg = parseFloat(@average.value)\n if !isNaN(quantity) and !isNaN(avg)\n outlay = MoneyFormat.roundTo(avg * quantity, 2)\n @outlay.value = outlay\n\n formSuccess: (data) ->\n FlashMessage.success(\"Holding Updated Successfully\")\n @parent.load()\n\n formError: (event) ->\n FlashMessage.error(\"Holding Update Failed. Please try again\")","import * as material from 'utils/material_elements'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {scroll_to_element} from 'utils/scroller'\nimport {params_with_csrf_token} from 'utils/form_utils'\nimport {EmojiFallback} from 'utils/emoji_fallback'\nimport {MenuBuilder} from 'components/menu_builder'\nimport {PopupMessage} from 'components/popup_message'\nimport {ModifyHoldingForm} from 'generator/modify_holding_form'\nimport {MDCMenu} from '@material/menu'\nimport {Corner} from '@material/menu-surface'\nimport {FlashMessage} from 'components/flash'\nimport {MoneyFormat} from 'utils/money_format'\n\nexport class Holding\n\n constructor: (@parent, @portfolio, @holding) ->\n @emoji = new EmojiFallback()\n\n load: -> @parent.load() # called from ModifyHoldingForm\n\n html: ->\n @card = element_with_class('div', 'mdc-card', 'holding')\n if @portfolio.can_edit\n menu = @buildMenu()\n @card.append element_with_content('div', menu, 'mdc-menu-surface--anchor')\n @prepareMenu(menu)\n @card.append @logo()\n @card.append @mainContent()\n @card\n\n logo: ->\n div = element_with_class('div', 'img')\n if @holding.img\n img = document.createElement('IMG')\n img.setAttribute('src', @holding.img)\n img.setAttribute('alt', @holding.share)\n div.append img\n div\n\n mainContent: ->\n div = element_with_class('div', 'center')\n div.append @titleRow()\n div.append @tickerAndFlag()\n div.append @valueBoxes()\n div.append @extraValues()\n div\n\n titleRow: ->\n div = element_with_class('div', 'title-with-icon')\n div.append @title()\n div.append @icons()\n div\n\n title: ->\n title = element_with_content('div', @holding.share, 'mdc-typography--headline5')\n title.addEventListener 'click', (e) => @card.classList.toggle('expanded')\n title\n\n icons: ->\n div = element_with_class('div', 'icons')\n div.append @menuIcon() if @portfolio.can_edit\n div.append @expandIcon()\n div\n\n menuIcon: ->\n icon = element_with_content('div', '', 'material-icons')\n icon.addEventListener 'click', => @menu.open = !@menu.open\n icon\n\n prepareMenu: (menu) ->\n @menu = new MDCMenu(menu) \n @menu.listen 'MDCMenu:selected', (event) =>\n if event.detail.index is 0\n @showEditHolding()\n else\n @confirmRemoveHolding()\n menu\n\n buildMenu: ->\n builder = new MenuBuilder('Edit holding', 'Delete holding')\n builder.build()\n\n expandIcon: ->\n icon = element_with_content('div', '', 'material-icons', 'expand-icon')\n icon.addEventListener 'click', =>\n @card.classList.toggle 'expanded'\n scroll_to_element(\"#extra-#{@holding.id}\")\n icon\n\n tickerAndFlag: ->\n div = element_with_class('div', 'ticker-flag')\n div.append element_with_content('span', @holding.flag)\n div.append @tickerLink()\n @emoji.replaceInElement(div)\n div\n\n tickerLink: ->\n link = element_with_content('a', @holding.ticker, 'ticker')\n link.setAttribute('href', @holding.share_path)\n link\n\n valueBoxes: ->\n div = element_with_class('div', 'horizontal-cards')\n div.append @outlayCard()\n div.append @capitalGainCard()\n div.append @dividendsCard()\n div.append @performanceCard()\n div.append @marketValueCard()\n div.addEventListener 'click', (e) => @card.classList.toggle('expanded')\n div\n\n outlayCard: ->\n quantity = \"#{@holding.quantity} #{if @holding.quantity == \"1\" then 'share' else 'shares'}\"\n outlay = @holding.outlay or @holding.toutlay\n if outlay\n @valueCard('Outlay', MoneyFormat.format(outlay, @portfolio.currency.code), quantity)\n else\n @valueCard('Holding', quantity)\n\n capitalGainCard: ->\n return @valueCard('Capital Gain', null) if @holdingOutlayNotSet()\n cap_gain = if @holding.quantity == \"0\" then @holding.tcap_gain else @holding.cap_gain\n cap_gain_p = if @holding.quantity == \"0\" then @holding.tcap_gain_p else @holding.cap_gain_p\n @valueCard('Capital Gain', MoneyFormat.format(cap_gain, @portfolio.currency.code), cap_gain_p, true)\n\n dividendsCard: ->\n value = if @holding.quantity == \"0\" then @holding.tdivs_rec else @holding.divs_rec\n return @valueCard('Dividends', MoneyFormat.format(value, @portfolio.currency.code)) if @holdingOutlayNotSet()\n percent = if @holding.quantity == \"0\" then @holding.tdivs_rec_p else @holding.divs_rec_p\n percent = \"#{percent} yield\"\n @valueCard('Dividends', MoneyFormat.format(value, @portfolio.currency.code), percent)\n\n performanceCard: ->\n return @valueCard('Performance', null) if @holdingOutlayNotSet()\n\n value = if @holding.quantity == \"0\" then @holding.ttot_gain else @holding.tot_gain\n percent = if @holding.quantity == \"0\" then @holding.ttot_gain_p else @holding.tot_gain_p\n @valueCard('Performance', MoneyFormat.format(value, @portfolio.currency.code), percent, true)\n\n marketValueCard: ->\n @valueCard('Market Value', MoneyFormat.format(@holding.cur_val, @portfolio.currency.code))\n\n valueCard: (label, main_value, second_value, is_percent_gain) ->\n card = element_with_class('div', 'mdc-card', 'padded-card', 'value-card')\n card.classList.add 'nil-card' if (main_value == null or main_value == undefined) and (second_value == null or second_value == undefined)\n card.append element_with_content('div', label, 'mdc-typography--overline', 'mdc-theme--secondary')\n main_value = 'n/a' if main_value == null\n card.append element_with_content('div', main_value, 'mdc-typography--headline5')\n\n if second_value\n value = if is_percent_gain then @percentChange(second_value, main_value[0] == '-') else element_with_content('div', second_value, 'mdc-typography--body2')\n card.append value\n card\n\n percentChange: (percent, negative) ->\n div = element_with_class('div', 'value')\n div.append @changeIcon(negative)\n div.append element_with_content('div', percent, 'mdc-typography--body2')\n div\n\n changeIcon: (negative) ->\n icon = if negative then '' else ''\n arrowClass = if negative then 'down' else 'up'\n element_with_content('span', icon, 'material-icons', arrowClass)\n\n extraValues: ->\n div = element_with_class('div', 'extra')\n div.setAttribute('id', \"extra-#{@holding.id}\")\n cols = element_with_class('div', 'cols')\n cols.append @extraColumn1()\n cols.append @extraColumn2()\n div.append cols\n div.append @nextDividend() if @holding.next_div\n div\n\n extraColumn1: ->\n div = element_with_class('div', 'col')\n if @showCumulative()\n div.append element_with_content('div', 'Current holding', 'header', 'row', 'mdc-typography--overline', 'mdc-theme--secondary')\n div.append @detailRow('Outlay', @holding.outlay, null, true)\n div.append @detailRow('Average price', @holding.avg_price, null, true)\n div.append @detailRow('Capital gain', @holding.cap_gain, null, true)\n div.append @detailRow('Dividends', @holding.divs_rec, null, true)\n div.append @detailRow('Performance', @holding.tot_gain, null, true)\n div.append @currentPriceRow()\n div.append @detailRow('First purchased', @holding.since)\n else\n div.append @detailRow('Outlay', @holding.outlay, null, true)\n div.append @detailRow('Capital gain', @holding.cap_gain, null, true)\n div.append @detailRow('Dividends', @holding.divs_rec, null, true)\n div.append @detailRow('Performance', @holding.tot_gain, null, true)\n div\n\n extraColumn2: ->\n div = element_with_class('div', 'col')\n if @showCumulative()\n div.append element_with_content('div', 'Cumulative total', 'header', 'row', 'mdc-typography--overline', 'mdc-theme--secondary')\n div.append @detailRow('Outlay', @holding.toutlay, null, true)\n div.append @detailRow('Average price', @holding.tavg_price, null, true)\n div.append @detailRow('Capital gain', @holding.tcap_gain, null, true)\n div.append @detailRow('Dividends', @holding.tdivs_rec, null, true)\n div.append @detailRow('Performance', @holding.ttot_gain, null, true)\n div.append @detailRow('Sector', @holding.sector)\n div.append @detailRow('Last sold', @holding.sold)\n else\n div.append @detailRow('Purchase price', @holding.tavg_price, null, true)\n div.append @currentPriceRow()\n div.append @detailRow('Sector', @holding.sector)\n div.append @detailRow('First purchased', @holding.since)\n div\n\n showCumulative: -> @holding.outlay != @holding.toutlay\n\n detailRow: (label, val, extra, format_money) ->\n clazz = if !val then 'null' else if val[0] is \"-\" then 'neg' else null\n row = element_with_class('div', 'row', clazz)\n row.append element_with_content('label', label)\n if val\n val = MoneyFormat.format(val, @portfolio.currency.code) if format_money\n else\n val = 'n/a'\n row.append element_with_content('span', val)\n row.append element_with_content('span', \"(#{extra})\", 'hint') if extra\n row\n\n currentPriceRow: ->\n row = element_with_class('div', 'row')\n row.append element_with_content('label', 'Current price')\n div = document.createElement('div')\n if @holding.cap_gain and @holding.quantity != \"0\"\n div.append @changeIcon(@holding.cap_gain[0] == '-')\n div.append MoneyFormat.format(@holding.cur_price, @holding.cur)\n div.append(element_with_content('span', \"(#{MoneyFormat.format(@holding.pr_lo, @portfolio.currency.code)})\", 'fx')) unless @holding.cur == @portfolio.currency.code\n row.append div\n row\n\n holdingOutlayNotSet: ->\n @holding.outlay is null and @holding.toutlay is null\n\n nextDividend: ->\n div = element_with_class('div', 'next-dividend', 'cols')\n col1 = element_with_class('div', 'col')\n col2 = element_with_class('div', 'col')\n title = element_with_content('div', element_with_content('span', 'Next Dividend', 'mdc-typography--overline', 'mdc-theme--secondary'), 'header', 'row')\n title.append element_with_content('span', @holding.next_div.st, 'div-status')\n col1.append title\n col2.append element_with_class('div', 'header', 'row', 'header2')\n col1.append @detailRow('Ex Div Date', @holding.next_div.ex)\n col2.append @detailRow('Pay Date', @holding.next_div.pa)\n col1.append @detailRow('Per Share', @holding.next_div.am)\n payment = MoneyFormat.format(@holding.next_div.to, @holding.next_div.tc)\n payment = \"#{MoneyFormat.format(@holding.next_div.lo, @portfolio.currency.code)} (#{payment})\" if @holding.next_div.lo\n col2.append @detailRow('Payment', payment)\n div.append col1\n div.append col2\n div\n\n showEditHolding: ->\n form = new ModifyHoldingForm(@holding, @portfolio, this)\n form.load()\n\n confirmRemoveHolding: ->\n dialog = PopupMessage.confirm(\"Delete holding\", \"Are you sure you want to remove this holding and any associated transactions?\")\n dialog.listen 'MDCDialog:closed', (event) =>\n @removeHolding() if event.detail.action == 'accept'\n\n removeHolding: ->\n params = params_with_csrf_token()\n params.append '_method', 'DELETE'\n fetch(\"/portfolios/#{@portfolio.id}/holdings/#{@holding.id}\", method: 'POST', body: params, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then =>\n FlashMessage.success(\"#{@holding.share} removed successfully\")\n @card.classList.add 'collapsed'\n @parent.load()","import * as material from 'utils/material_elements'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {Holding} from 'generator/holding'\nimport {GeneratorTab} from 'generator/generator_tab'\nimport {AddHoldingForm} from 'generator/add_holding_form'\nimport {MoneyFormat} from 'utils/money_format'\n\nexport class Holdings extends GeneratorTab\n \n load: ->\n fetch(\"/portfolios/#{@id}/holdings.json\").then (response) => @receiveHoldings(response)\n\n formComplete: ->\n @reload()\n @scrollToContent()\n\n receiveHoldings: (response) ->\n response.json().then (@portfolio) =>\n @emptyTab()\n @buildTabContent()\n @setPortfolioValue(@portfolio)\n\n buildTabContent: ->\n grid = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n grid.append @top()\n grid.append @holdingsList()\n @tab.append grid\n\n top: ->\n div = element_with_class('div', 'title-and-status')\n div.append @portfolioValueCard()\n div.append @addButton() if @portfolio.can_edit\n div\n\n portfolioValueCard: ->\n card = element_with_class('div', 'mdc-card', 'padded-card', 'value-card')\n card.append element_with_content('div', 'Market Value', 'mdc-typography--overline', 'mdc-theme--secondary')\n text = if @portfolio.mkt_val == null then \"#{@portfolio.currency.unit}0\" else MoneyFormat.format(@portfolio.mkt_val, @portfolio.currency.code)\n card.append element_with_content('div', text, 'mdc-typography--headline5', 'portfolio-value')\n text = if @portfolio.cur is 1 then \"1 holding\" else \"#{@portfolio.cur} holdings\"\n card.append element_with_content('div', text, 'mdc-typography--body2', 'portfolio-holdings')\n card\n\n holdingsList: ->\n @holdings = element_with_class('div', 'holding-list')\n @addHoldings()\n @holdings\n\n addButton: ->\n @button = material.submit_button 'Add Holding', true\n @button.addEventListener 'click', => @addHoldingClicked()\n @button\n\n addHoldings: ->\n @addHolding(holding) for holding in @portfolio.holdings\n @addEmptyMessage() if @portfolio.holdings.length == 0\n\n addHolding: (holding) ->\n h = new Holding(this, @portfolio, holding)\n @holdings.append h.html()\n\n addHoldingClicked: ->\n new AddHoldingForm(@id, this, false)\n\n addEmptyMessage: ->\n @holdings.append element_with_content('div', 'This portfolio is empty', 'notice')","import {element_with_class, element_with_content} from 'utils/material_elements'\nimport {PopupMessage} from 'components/popup_message'\nimport {MoneyFormat} from 'utils/money_format'\n\nexport class FutureDividend\n \n constructor: (@dividend, @currency) ->\n\n html: ->\n div = element_with_class('li', 'mdc-list-item', 'income')\n div.append @imageBox()\n div.append @middlePart()\n div.append @rightPart()\n div.addEventListener 'click', => @showPopup()\n div\n\n imageBox: ->\n img = element_with_class('span', 'mdc-list-item__graphic')\n img.append @image() if @dividend.img\n img\n\n image: ->\n img = document.createElement('IMG')\n img.setAttribute('src', @dividend.img)\n img.setAttribute('alt', @dividend.sn) \n img\n\n middlePart: ->\n span = element_with_class('span', 'mdc-list-item__text')\n span.append @name()\n span.append @ticker()\n span.append @date()\n span\n\n rightPart: ->\n div = element_with_class('div', 'right')\n div.append @amount()\n div.append @shares()\n div\n\n name: -> element_with_content('span', @dividend.sn, 'mdc-list-item__primary-text', 'name')\n ticker: -> element_with_content('span', @dividend.tk, 'mdc-list-item__primary-text', 'ticker')\n date: -> element_with_content('span', @dividend.pd, 'mdc-list-item__secondary-text')\n amount: -> \n span = element_with_class('span', 'amount')\n span.append element_with_content('span', 'est', 'estimate') if @dividend.est\n span.append element_with_content('span', MoneyFormat.formatFull(@dividend.to, @currency.code), 'gb')\n span\n \n shares: -> \n label = if @dividend.qty == \"1\" then '1 share' else \"#{@dividend.qty} shares\"\n element_with_content('span', label, 'shares')\n\n showPopup: ->\n @dialog = PopupMessage.showPopup @popupContent()\n\n popupContent: -> \n @content = element_with_class('div', 'dialog-content')\n @content.append PopupMessage.closeIcon()\n @content.append element_with_content('div', @popupTable(), 'mdc-data-table')\n @content\n\n\n popupTable: -> element_with_content('table', @popupTableBody(), 'mdc-data-table__table')\n\n popupTableBody: ->\n table = document.createElement('TBODY')\n table.append @tableRow('Company', @dividend.sn)\n table.append @tableRow('Ticker', @tickerLink())\n table.append @tableRow('Dividend Type', @dividend.ty)\n table.append @tableRow('Ex-Div Date', @dividend.xd)\n table.append @tableRow('Pay Date', @dividend.pd)\n table.append @tableRow('Quantity', @dividend.qty)\n table.append @tableRow('Payment', MoneyFormat.formatFull(@dividend.to, @currency.code))\n table.append @tableRow(\"#{@dividend.lc} Payment\", MoneyFormat.formatFull(@dividend.lt, @dividend.lc)) if @dividend.lt\n table\n\n tableRow: (label, value) ->\n tr = element_with_class('tr', 'mdc-data-table__row')\n th = element_with_content('th', label, 'mdc-data-table__header-cell')\n th.setAttribute('scope', 'row')\n tr.append th\n value = \"£0\" unless value\n value = value.substring(1) if value[0] is '-'\n td = element_with_content('td', value, 'mdc-data-table__cell')\n tr.append td\n tr\n\n tickerLink: ->\n link = element_with_content('a', @dividend.tk)\n link.setAttribute('href', @dividend.ln)\n link","import {element_with_class, element_with_content, link_button} from 'utils/material_elements'\nimport {GeneratorTab} from 'generator/generator_tab'\nimport {FutureDividend} from 'generator/future_dividend'\nimport {MoneyFormat} from 'utils/money_format'\n\nexport class FutureIncome extends GeneratorTab\n\n load: ->\n fetch(\"/portfolios/#{@id}/income.json\").then (response) => @receiveData(response)\n\n formComplete: ->\n @load()\n\n receiveData: (response) ->\n response.json().then (@json) =>\n @emptyTab()\n @buildTabContent()\n\n buildTabContent: ->\n grid = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n grid.append @annualTotalBoxes()\n grid.append @yearData(year) for year in @json.years\n grid.append(@emptyMessage()) if @json.years.length is 0\n @tab.append grid\n\n emptyMessage: -> element_with_content('div', 'No future portfolio income', 'notice')\n\n newLink: ->\n button = link_button('Add Holding', '#', true, true)\n button.addEventListener 'click', (e) => @showNewAddHoldingForm(e)\n button\n\n annualTotalBoxes: ->\n div = element_with_class('div', 'horizontal-cards')\n div.append @annualTotalCard(year) for year in @json.years\n div\n\n annualTotalCard: (year) ->\n card = element_with_class('div', 'mdc-card', 'padded-card', 'value-card')\n card.append element_with_content('div', @labelForTotal(year), 'mdc-typography--overline', 'mdc-theme--secondary')\n card.append element_with_content('div', MoneyFormat.format(year.total, @json.currency.code), 'mdc-typography--headline5', 'portfolio-value')\n card \n\n showNewAddHoldingForm: (e) ->\n e.preventDefault()\n form = new AddHoldingForm(@id, this, false)\n form.load()\n\n yearData: (year) ->\n div = element_with_class('div', 'year')\n div.append @monthData(month) for month in year.months\n div.append @totalRow(year)\n div\n\n monthData: (month) ->\n div = element_with_class('div', 'month')\n div.append @monthHeader(month)\n div.append @dividends(month.dividends)\n div.append @totalRow(month)\n div\n\n dividends: (dividends) ->\n list = element_with_class('ul', 'mdc-list', 'mdc-list--two-line', 'mdc-list--avatar-list')\n for dividend, i in dividends\n list.append @dividendRow(dividend)\n list.append @spacerRow() unless i+1 == dividends.length\n list\n\n spacerRow: ->\n row = element_with_class('li', \"mdc-list-divider\")\n row.setAttribute('role', \"separator\")\n row\n\n dividendRow: (dividend) ->\n d = new FutureDividend(dividend, @json.currency)\n d.html()\n\n monthHeader: (month) -> element_with_content('div', month.label, 'row-block-header')\n\n totalRow: (period) ->\n div = element_with_class('div', 'subtotal')\n div.classList.add('annual') if period.months\n div.append element_with_content('label', @labelForTotal(period))\n div.append element_with_content('span', MoneyFormat.formatFull(period.total, @json.currency.code))\n div\n\n labelForTotal: (period) ->\n if period.months\n today = new Date()\n if today.getFullYear() == parseInt(period.label)\n return \"Remaining for #{period.label}\"\n \"Total for #{period.label}\"","import {element_with_class, element_with_content, submit_button, text_field, money_input_field, integer_input_field} from 'utils/material_elements'\nimport {DateFormatter} from 'utils/date_formatter'\nimport {GeneratorTab} from 'generator/generator_tab'\nimport {MDCTextField} from '@material/textfield'\nimport {MDCTextFieldHelperText} from '@material/textfield/helper-text'\nimport {MoneyFormat} from 'utils/money_format'\nimport {params_with_csrf_token} from 'utils/form_utils'\nimport DatePicker from 'tui-date-picker'\n\nexport class TransactionForm extends GeneratorTab\n\n transactionDateInput: ->\n element_with_content('div', @transactionDateField(), 'buy', 'sell', 'deposit', 'withdraw', 'input', 'date')\n\n transactionDateField: ->\n field = @textInput(\"Transaction Date\", 'transaction[transaction_date]', 'transaction_transaction_date', DateFormatter.formatDate(new Date()))\n @transactionDate = field.querySelector('input')\n @transactionDate.setAttribute('readonly', true)\n field\n\n prepareDatePicker: ->\n container = element_with_class('div', 'date-picker-container')\n @transactionDate.parentElement.parentElement.append container\n date = if @transactionDate.value.length > 0 then DateFormatter.parse(@transactionDate.value) else new Date()\n\n picker = new DatePicker container,\n date: date\n usageStatistics: false\n calendar:\n showToday: true\n input:\n element: @transactionDate\n format: 'dd MMMM yyyy'\n\n picker.on 'change', => \n @loadExchangeRate()\n\n quantityInput: -> \n field = text_field('Quantity', 'transaction[quantity]', if @transaction then @transaction.qty else \"\")\n input = field.querySelector('input')\n input.setAttribute('id', 'transaction_quantity')\n input.setAttribute('pattern', \"[0-9\\\\.]*\")\n input.setAttribute('inputmode', \"numeric\")\n input.setAttribute('aria-controls', \"quantity-helper\")\n input.setAttribute('aria-describedby', \"quantity-helper\")\n input.setAttribute('min', 1)\n input.setAttribute('max', 2147483647)\n @quantity = new MDCTextField(field)\n @quantity.useNativeValidation = false\n input.addEventListener 'keyup', =>\n input.value = input.value.replace(/[^0-9]/g, \"\")\n valid = input.value.length == 0 or parseInt(input.value) <= MAX_INTEGER\n @quantity.valid = valid\n @quantityError.foundation.setPersistent !valid\n @updateTotal() if valid\n element = element_with_content('div', field, 'input', 'with-validation', 'quantity')\n helper = @inputHelperText('quantity-helper', 'Quantity is too big')\n @quantityError = new MDCTextFieldHelperText(helper.querySelector('.mdc-text-field-helper-text'))\n element.append helper\n element\n\n priceAndCurrencyInput: (label) -> \n label or= 'Purchase Price'\n div = element_with_content('div', @priceInput(label), 'line')\n div.append @currencyInput() if @type is 1 or @type is 2\n div\n\n priceInput: (label) -> @moneyInputField(label, 'transaction[price]', 'transaction_price', 'price', 'with-validation')\n\n exchangeRateInput: ->\n field = @numberInputField('Exchange rate', 'transaction[exchange_rate]', 'transaction_exchange_rate', 'exchange-rate', 'hidden')\n field.classList.remove('hidden') if @transaction and @transaction.curr and @transaction.curr.id != @portfolioCurrency.id\n @exchangeRate = field.querySelector('input')\n field\n\n commissionInput: -> @moneyInputField('Commission', 'transaction[commission]', 'transaction_commission', 'commission', 'with-validation')\n stampDutyInput: -> @moneyInputField('Stamp duty', 'transaction[stamp_duty]', 'transaction_stamp_duty', 'stamp_duty', 'with-validation')\n\n numberInputField: (label, name, id, classes...) ->\n input = @numberInput(label, name, id)\n input.setAttribute 'pattern', \"[0-9\\\\.]*\"\n input.setAttribute 'inputmode', \"numeric\"\n element_with_content('div', input, 'input', classes...)\n\n numberInput: (label, name, id, value) ->\n field = text_field(label, name, value or null)\n input = field.querySelector('input')\n input.setAttribute('id', id)\n input.setAttribute 'pattern', \"[0-9\\\\.]*\"\n input.setAttribute 'inputmode', \"numeric\" \n input.addEventListener('keyup', => @updateTotal(input))\n new MDCTextField(field)\n field\n\n textInput: (label, name, id, value) ->\n field = text_field(label, name, value or null)\n input = field.querySelector('input')\n input.setAttribute('id', id)\n new MDCTextField(field)\n field\n\n moneyInputField: (label, name, id, classes...) -> \n field = element_with_content('div', money_input_field(label, name, null), 'input', classes...)\n textfield = new MDCTextField(field.querySelector('label'))\n helper = @inputHelperText(\"#{id}-helper\", \"#{label} is too big\")\n error = new MDCTextFieldHelperText(helper.querySelector('.mdc-text-field-helper-text'))\n field.append helper\n input = field.querySelector('input')\n input.setAttribute('id', id)\n input.setAttribute('aria-controls', \"#{id}-helper\")\n input.setAttribute('aria-describedby', \"#{id}-helper\") \n input.addEventListener 'keyup', =>\n input.value = input.value.replace(/[^0-9\\.]/g, \"\")\n valid = input.value.length == 0 or parseFloat(input.value) <= MAX_PRICE\n textfield.valid = valid\n error.foundation.setPersistent !valid\n @updateTotal(input) if valid\n field\n\n inputHelperText: (id, message) ->\n text = element_with_content('div', message, 'mdc-text-field-helper-text', 'mdc-text-field-helper-text--validation-msg')\n text.setAttribute('id', id)\n text.setAttribute('aria-hidden', true)\n text.setAttribute('role', 'alert')\n element_with_content('div', text, 'mdc-text-field-helper-line')\n\n emptySelect: (name, id) ->\n select = document.createElement('SELECT')\n select.setAttribute('name', name)\n select.setAttribute('id', id)\n select\n\n totalBox: ->\n box = element_with_class('div', 'mdc-card', 'padded-card', 'value-card')\n box.append element_with_content('div', 'Total', 'mdc-typography--overline', 'mdc-theme--secondary')\n @total = element_with_content('div', '£0.00', 'mdc-typography--headline5')\n box.append @total\n box\n\n formButtons: ->\n div = element_with_class('div', 'buttons')\n @submitButton = submit_button(@submitButtonTitle(), true)\n div.append @submitButton\n div.append @cancelButton()\n div\n\n cancelButton: ->\n button = submit_button('Cancel')\n button.addEventListener 'click', (e) =>\n e.preventDefault()\n @parent.reload()\n @scrollToContent() \n button\n\n submitButtonTitle: -> \"Add Transaction\"\n\n resetForm: ->\n $('#transaction_commission').val('')\n $('#transaction_stamp_duty').val('')\n $('#transaction_exchange_rate').val('1')\n $('#transaction_stamp_duty').data('set', null)\n\n priceInputLabel: ->\n switch @type\n when 1 then 'Purchase price'\n when 2 then 'Sale price'\n else \"Amount (#{@portfolioCurrency.unit})\"\n\n currencySelected: ->\n if @selectedCurrencyField('code') == @portfolioCurrency.code\n @exchangeRate.value = 1\n document.querySelector('.exchange-rate').classList.add('hidden')\n else\n document.querySelector('.exchange-rate').classList.remove('hidden')\n @loadExchangeRate()\n\n @updateCurrencySymbols()\n @updateTotal()\n\n updateCurrencySymbols: ->\n symbol = @selectedCurrencyField('unit')\n el.innerText = symbol for el in document.querySelectorAll('.currency-symbol')\n\n selectedCurrencyField: (field) ->\n return @transactionCurrencyField(field) if @transactionsNotLoaded()\n super(field)\n\n transactionsNotLoaded: -> @currency_select is undefined or @currency_select.querySelectorAll('li').length is 0\n\n transactionCurrencyField: (field) ->\n if @transaction and @transaction.curr then @transaction.curr[field] else @portfolioCurrency[field]\n\n loadExchangeRate: ->\n code = @selectedCurrencyField('code')\n unless code == @portfolioCurrency.code or @exchangeRate.dataset.set\n url = \"/exchange_rates/#{code}?source=#{@portfolioCurrency.code}&date=#{@transactionDate.value}\"\n fetch(url).then (response) => response.json().then (json) => @setExchangeRate(json)\n\n setExchangeRate: (json) ->\n rate = Math.round((1 / json.rate) * 10000) / 10000\n field = document.querySelector('.exchange-rate')\n @setFieldValue(field, rate)\n field.classList.add('shown')\n @updateTotal()\n\n setFieldValue: (field, value) ->\n return unless field\n input = field.querySelector('input')\n unless input.dataset.set\n input.value = value\n field.querySelector('label').classList.add('mdc-text-field--label-floating')\n field.querySelector('label .mdc-floating-label').classList.add('mdc-floating-label--float-above')\n\n updateTotal: (input) ->\n input.dataset.set = true if input\n if @type is 1 or @type is 2\n quantity = parseInt(document.querySelector('#transaction_quantity').value)\n if isNaN(quantity)\n @total.innerText = MoneyFormat.formatFull(0, @selectedCurrencyField('code'))\n else\n price = @parseFloatValueOf('#transaction_price')\n @updateStampDuty(price, quantity) if @type is 1\n commission = @parseFloatValueOf('#transaction_commission')\n stamp_duty = if @type is 1 then @parseFloatValueOf('#transaction_stamp_duty') else 0\n amount = if @type is 1 then quantity * price + commission + stamp_duty else quantity * price - commission\n @total.innerText = MoneyFormat.formatFull(amount, @selectedCurrencyField('code'))\n else\n @total.innerText = MoneyFormat.formatFull(@parseFloatValueOf('#transaction_price'), @portfolioCurrency.code)\n\n validateCommonFormFields: ->\n errors = []\n if @type is 1 or @type is 2\n @validateIntegerValue('Quantity', errors, true)\n @validateIntegerValue('Commission', errors, false, true)\n if @type is 1\n @validateIntegerValue('Stamp Duty', errors, false, true)\n @validatePrice(errors)\n errors\n\n MAX_INTEGER = 2147483647\n MAX_PRICE = 99999999\n\n validateIntegerValue: (name, errors, required, money_amount) ->\n id = \"#transaction_#{name.toLowerCase().replace(\" \", \"_\")}\"\n val = parseInt(document.querySelector(id).value)\n errors.push(\"#{name} is required\") if required and (val == 0 or isNaN(val))\n max = if money_amount then MAX_INTEGER / 100.0 else MAX_INTEGER\n display_max = if money_amount then '21,474,836' else '2,147,483,647'\n errors.push(\"#{name} is too large. Maximum allowed value is #{display_max}\") if val > max\n\n validatePrice: (errors) ->\n val = parseFloat(document.querySelector('#transaction_price').value)\n if val < 0 or isNaN(val)\n errors.push(\"Price is not valid\")\n else if val > MAX_PRICE\n errors.push(\"Price is too large. Maximum allowed value is 99,999,999\")\n\n parseFloatValueOf: (id) ->\n val = parseFloat(document.querySelector(id).value)\n if isNaN(val) then 0 else val\n\n updateStampDuty: (price, quantity) ->\n return unless @share\n value = if @share and @share.sd then Math.round(0.005 * price * quantity) else 0\n @setFieldValue document.querySelector('.stamp_duty'), value","import {TransactionForm} from 'generator/transaction_form'\nimport {MDCList} from '@material/list'\nimport {MDCCheckbox} from '@material/checkbox'\nimport {element_with_class, element_with_content, submit_button} from 'utils/material_elements'\nimport {form_element, form_params, hidden_field} from 'utils/form_utils'\nimport {FlashMessage} from 'components/flash'\nimport {MoneyFormat} from 'utils/money_format'\nimport {EventTracking} from 'utils/amplitude'\nimport Choices from 'choices.js'\n\nexport class ModifyTransactionForm extends TransactionForm\n\n constructor: (@transaction, @parent) ->\n @portfolioCurrency = @parent.portfolioCurrency()\n @tab = document.querySelector('#portfolio-data')\n @type = switch @transaction.type_class\n when 'purchase' then 1\n when 'sale' then 2\n when 'deposit' then 3\n when 'withdrawal' then 4\n @load()\n \n load: ->\n @emptyTab()\n @grid = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n @grid.append element_with_content('div', 'Modify transaction', 'mdc-typography--headline5')\n @grid.append @gridContent()\n @tab.append @grid\n @populateForm()\n @prepareDatePicker()\n @scrollToContent()\n\n pageTitle: ->\n switch @transaction.type_class\n when 'purchase' then \"Share purchase: #{@transaction.share_name}\"\n when 'sale' then \"Share sale: #{@transaction.share_name}\"\n else @transaction.type\n\n gridContent: -> \n step = element_with_class('div', 'step', 'active', 'allow-overflow')\n div = element_with_class('div', 'inner')\n div.append element_with_content('h3', @pageTitle(), 'mdc-typography--headline6')\n div.append @editTransactionForm()\n step.append div\n step\n\n editTransactionForm: ->\n @form = form_element(@formUrl(), 'POST', 'edit_transaction')\n @form.classList.add 'material-form', 'transaction'\n @form.append hidden_field('transaction[id]', @transaction.id)\n @form.append @transactionDateInput()\n @form.append @quantityInput() if @transaction.type_class is 'purchase' or @transaction.type_class is 'sale'\n @form.append @priceAndCurrencyInput(@priceInputLabel())\n @form.append @exchangeRateInput() if @showExchangeRateInput()\n @form.append @commissionInput() if @transaction.type_class is 'purchase' or @transaction.type_class is 'sale'\n @form.append @stampDutyInput() if @transaction.type_class is 'purchase'\n @form.append @totalBox()\n @form.append @formButtons()\n @form.addEventListener 'submit', (e) => @formSubmitted(e)\n @form\n\n showExchangeRateInput: ->\n (@transaction.type_class is 'purchase' or @transaction.type_class is 'sale')\n\n priceInputLabel: ->\n switch @transaction.type_class\n when 'purchase' then 'Purchase price'\n when 'sale' then 'Sale price'\n else \"Amount (#{@portfolioCurrency.unit})\"\n\n formSubmitted: (e) ->\n e.preventDefault()\n return false unless @validateForm()\n params = form_params('#edit_transaction')\n params.append('_method', 'patch')\n params.append('transaction[currency_id]', @selectedCurrencyField('value'))\n fetch(@formUrl(), method: 'POST', body: params, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) => @handleFormResponse(response)\n\n validateForm: ->\n errors = @validateCommonFormFields()\n @showErrors(errors) if errors.length > 0\n errors.length == 0\n\n formUrl: -> \"/transactions/#{@transaction.id}\"\n\n handleFormResponse: (response) ->\n response.json().then (json) =>\n if json.success\n FlashMessage.success \"Transaction saved successfully\"\n EventTracking.track('ModifyTransaction')\n @parent.reload()\n @scrollToContent()\n else\n FlashMessage.error \"Error saving this transaction\"\n @showErrors(json.errors)\n\n submitButtonTitle: -> \"Update Transaction\"\n\n populateForm: ->\n @setFieldValue document.querySelector('.date'), @transaction.fdate\n @setFieldValue document.querySelector('.price'), @transaction.price\n @setFieldValue document.querySelector('.quantity'), @transaction.qty.replace(/,/g, '')\n @setFieldValue document.querySelector('.commission'), @transaction.cmsn\n @setFieldValue document.querySelector('.exchange-rate'), @transaction.fx if document.querySelector('.exchange-rate')\n @setFieldValue document.querySelector('.stamp_duty'), @transaction.stmp if document.querySelector('.stamp_duty')\n @updateCurrencySymbols()\n @updateTotal()","import {element_with_class, element_with_content, submit_button} from 'utils/material_elements'\nimport {params_with_csrf_token} from 'utils/form_utils'\nimport {MoneyFormat} from 'utils/money_format'\nimport {PopupMessage} from 'components/popup_message'\nimport {FlashMessage} from 'components/flash'\nimport {ModifyTransactionForm} from 'generator/modify_transaction_form'\n\nexport class Transaction\n \n constructor: (@transaction, @parent, @includeBalance, @canEdit) ->\n @portfolioCurrency = @parent.portfolioCurrency()\n\n html: ->\n tr = element_with_class('tr', 'mdc-data-table__row')\n tr.append element_with_content('td', @transaction.date, 'mdc-data-table__cell')\n tr.append element_with_content('td', @nameAndImage(@transaction) or \" \", 'mdc-data-table__cell')\n tr.append element_with_content('td', @transaction.type, 'mdc-data-table__cell')\n tr.append element_with_content('td', MoneyFormat.formatFull(@transaction.total, @portfolioCurrency.code), 'mdc-data-table__cell', 'mdc-data-table__header-cell--numeric', @numberClass(@transaction.total))\n tr.append element_with_content('td', MoneyFormat.formatFull(@transaction.balance, @portfolioCurrency.code), 'mdc-data-table__cell', 'mdc-data-table__header-cell--numeric', @numberClass(@transaction.balance)) if @includeBalance\n tr.addEventListener 'click', => @showTransactionPopup()\n tr\n\n nameAndImage: (obj) ->\n return \" \" unless obj.share_name\n div = element_with_class('div', 'img-name')\n div.append element_with_content('div', @companyImage(obj), 'img')\n div.append element_with_content('div', obj.share_name, 'name')\n div.append element_with_content('div', obj.ticker, 'ticker')\n div\n\n companyImage: (obj) ->\n return \" \" unless obj.img\n img = document.createElement('IMG')\n img.setAttribute('src', obj.img)\n img.setAttribute('alt', obj.share_name)\n img\n\n numberClass: (number) ->\n if number[0] is '-' then 'down' else null\n\n showTransactionPopup: ->\n if @showMenu()\n @dialog = PopupMessage.showPopup @popupContent(), @editButton(), @deleteButton()\n @dialog.listen 'MDCDialog:closed', (event) =>\n if event.detail.action == 'edit'\n @showEditTransaction()\n else if event.detail.action == 'delete'\n @confirmRemoveTransaction()\n else\n @dialog = PopupMessage.showPopup @popupContent()\n\n popupContent: -> \n @content = element_with_class('div', 'dialog-content')\n @content.append PopupMessage.closeIcon()\n @content.append @tableDiv()\n @content\n\n showMenu: ->\n @canEdit and @transaction.type_class != 'dividend'\n\n deleteButton: -> PopupMessage.button('Delete', 'delete')\n editButton: -> PopupMessage.button('Edit', 'edit', true)\n\n confirmRemoveTransaction: ->\n dialog = PopupMessage.confirm(\"Delete transaction\", \"Are you sure you want to remove this transaction?\")\n dialog.listen 'MDCDialog:closed', (event) =>\n if event.detail.action == 'accept'\n @removeTransaction()\n @dialog.close()\n\n removeTransaction: ->\n params = params_with_csrf_token()\n params.append '_method', 'DELETE'\n fetch(\"/portfolios/#{@parent.id}/transactions/#{@transaction.id}\", method: 'POST', body: params, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then =>\n FlashMessage.success(\"#{@transaction.share_name} #{@transaction.stype} transaction removed successfully\")\n @parent.reload()\n\n showEditTransaction: ->\n @dialog.close()\n new ModifyTransactionForm(@transaction, @parent)\n\n tableDiv: -> element_with_content('div', @popupTable(), 'mdc-data-table')\n popupTable: -> element_with_content('table', @popupTableBody(), 'mdc-data-table__table')\n popupTableBody: ->\n table = document.createElement('TBODY')\n table.append @tableRow('Date', @transaction.fdate)\n table.append @tableRow('Type', @transaction.type)\n if @transaction.type_class is 'dividend' or @transaction.type_class is 'purchase' or @transaction.type_class is 'sale'\n table.append @tableRow('Share', @transaction.share_name)\n table.append @tableRow('Ticker', @tickerLink())\n table.append @tableRow('Per share', MoneyFormat.format(@transaction.price, @transactionCurrencyCode(), 6), true)\n table.append @tableRow('No. of shares', @transaction.qty, true)\n if @transaction.type_class is 'purchase' and @transaction.stmp\n table.append @tableRow('Stamp duty', MoneyFormat.formatFull(@transaction.stmp, @transactionCurrencyCode()), true)\n if @transaction.type_class is 'purchase' or @transaction.type_class is 'sale'\n table.append @tableRow('Commission', MoneyFormat.formatFull(@transaction.cmsn, @transactionCurrencyCode()), true)\n table.append @tableRow('Exchange Rate', @transaction.fx) if @transaction.fx and @transaction.fx != \"1.0\"\n table.append @tableRow('Total', MoneyFormat.formatFull(@transaction.total, @portfolioCurrency.code), true)\n if @transaction.type_class is 'dividend'\n table.append @tableRow('Payment', MoneyFormat.formatFull(@transaction.total, @portfolioCurrency.code), true)\n if @transaction.type_class is 'withdrawal' or @transaction.type_class is 'deposit'\n table.append @tableRow('Amount', MoneyFormat.formatFull(@transaction.total, @portfolioCurrency.code), true)\n table\n\n transactionCurrencyCode: ->\n if @transaction.curr then @transaction.curr.code else @portfolioCurrency.code\n\n tableRow: (label, value, number) ->\n tr = element_with_class('tr', 'mdc-data-table__row')\n th = element_with_content('th', label, 'mdc-data-table__header-cell')\n th.setAttribute('scope', 'row')\n tr.append th\n value = \"£0\" unless value\n value = value.substring(1) if value[0] is '-'\n td = element_with_content('td', value, 'mdc-data-table__cell')\n tr.append td\n tr\n\n tickerLink: ->\n link = element_with_content('a', @transaction.ticker)\n link.setAttribute('href', @transaction.ln)\n link","import {Transaction} from 'generator/transaction'\nimport {element_with_class, element_with_content} from 'utils/material_elements'\nimport {MoneyFormat} from 'utils/money_format'\n\nexport class TransactionHolding extends Transaction\n\n constructor: (@holding, @parent, @includeBalance) ->\n @portfolioCurrency = @parent.portfolioCurrency()\n\n html: ->\n tr = element_with_class('tr', 'mdc-data-table__row')\n tr.append element_with_content('td', @nameAndImage(@holding), 'mdc-data-table__cell')\n tr.append element_with_content('td', MoneyFormat.formatFull(@holding.outlay, @portfolioCurrency.code), 'mdc-data-table__cell', 'mdc-data-table__header-cell--numeric')\n tr.append element_with_content('td', MoneyFormat.formatFull(@holding.divs, @portfolioCurrency.code), 'mdc-data-table__cell', 'mdc-data-table__header-cell--numeric')\n tr.append element_with_content('td', MoneyFormat.formatFull(@holding.sold, @portfolioCurrency.code), 'mdc-data-table__cell', 'mdc-data-table__header-cell--numeric')\n tr.append element_with_content('td', MoneyFormat.formatFull(@holding.balance, @portfolioCurrency.code), 'mdc-data-table__cell', 'mdc-data-table__header-cell--numeric') if @includeBalance\n tr","import {TransactionForm} from 'generator/transaction_form'\nimport {CompanySearchForm} from 'components/company_search_form'\nimport {MDCList} from '@material/list'\nimport {MDCCheckbox} from '@material/checkbox'\nimport {element_with_class, element_with_content, submit_button} from 'utils/material_elements'\nimport {form_element, form_params, hidden_field} from 'utils/form_utils'\nimport {FlashMessage} from 'components/flash'\nimport {MoneyFormat} from 'utils/money_format'\nimport {EventTracking} from 'utils/amplitude'\nimport Choices from 'choices.js'\n\nexport class NewTransactionForm extends TransactionForm\n \n constructor: (@id, @parent) ->\n @tab = document.querySelector('#portfolio-data')\n @portfolioCurrency = @parent.portfolioCurrency()\n @reload()\n\n load: ->\n @emptyTab()\n @grid = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n @grid.append element_with_content('div', 'Add transaction', 'mdc-typography--headline5')\n @appendStep1Content()\n @tab.append @grid\n\n appendStep1Content: -> \n div = element_with_class('div', 'inner')\n @grid.append element_with_content('div', div, 'step', 'step1', 'active')\n div.append element_with_content('div', 'Select transaction type', 'mdc-typography--headline6')\n @appendStep1Buttons(div)\n div.append element_with_content('div', @cancelButton(), 'button-bar')\n\n appendStep1Buttons: (container) ->\n div = element_with_class('ul', 'mdc-list')\n div.setAttribute('role', 'group')\n @appendStep1Option(div, 1, 'Buy a share')\n div.append @listSeparator()\n @appendStep1Option(div, 2, 'Sell a share')\n div.append @listSeparator()\n if @parent.json.close_bal\n @appendStep1Option(div, 3, 'Deposit cash')\n div.append @listSeparator()\n @appendStep1Option(div, 4, 'Withdraw cash')\n div.append @listSeparator()\n container.append(div)\n list = new MDCList(div)\n list.listen 'MDCList:action', (event) => @transactionTypeSelected(event.detail.index + 1)\n\n appendStep1Option: (div, option, label) ->\n li = element_with_class('li', 'mdc-list-item')\n li.setAttribute('role', 'checkbox')\n li.setAttribute('aria-checked', 'false')\n div.append li\n li.append element_with_class('span', 'mdc-list-item__ripple')\n checkbox = @listCheckbox(option)\n li.append element_with_content('span', checkbox, 'mdc-list-item__graphic')\n l = element_with_content('label', label, 'mdc-list-item__text')\n l.setAttribute('for', \"option-#{option}\")\n li.append l\n new MDCCheckbox(checkbox)\n\n listCheckbox: (option) ->\n div = element_with_class('div', 'mdc-checkbox')\n input = element_with_class('input', 'mdc-checkbox__native-control')\n input.setAttribute('type', 'checkbox')\n input.setAttribute('id', \"option-#{option}\")\n input.setAttribute('name', \"type\")\n input.setAttribute('value', option)\n div.append input\n bg = element_with_class('div', 'mdc-checkbox__background')\n\n path = document.createElementNS('http://www.w3.org/2000/svg', 'path')\n path.classList.add 'mdc-checkbox__checkmark-path'\n path.setAttributeNS(null, 'fill', 'none')\n path.setAttributeNS(null, 'd', \"M1.73,12.91 8.1,19.28 22.79,4.59\")\n\n svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n svg.classList.add 'mdc-checkbox__checkmark'\n svg.setAttributeNS null, 'viewBox', '0 0 24 24'\n svg.append path\n\n bg.append svg\n bg.append element_with_class('div', 'mdc-checkbox__mixedmark')\n div.append bg\n div\n\n listSeparator: ->\n li = element_with_class('li', 'mdc-list-divider')\n li.setAttribute('role', 'separator')\n li\n\n transactionTypeSelected: (@type) ->\n @appendStep2Content()\n @prepareStep2()\n clazz = switch @type\n when 1 then 'buy'\n when 2 then 'sell'\n when 3 then 'deposit'\n when 4 then 'withdraw'\n @form.classList.add(clazz)\n document.querySelector('.step1').classList.remove('active')\n document.querySelector('.step2').classList.add('active') \n\n appendStep2Content: -> \n div = element_with_class('div', 'inner')\n @step2 = element_with_content('div', div, 'step', 'step2', 'allow-overflow')\n @grid.append @step2\n div.append element_with_content('div', @formTitle(), 'mdc-typography--headline6')\n div.append @selectShareInput() if @type is 1\n div.append @warningMessage() if @type is 1 or @type is 2\n div.append @newTransactionForm()\n @updateCurrencySymbols()\n @updateTotal()\n\n prepareStep2: ->\n @search.prepareSearch((value) => @suggestedShareSelected(value)) if @search\n @loadHoldingList() if @type is 2\n @prepareDatePicker()\n\n warningMessage: ->\n @warning = element_with_class('div', 'transaction-warning-message')\n @warning.append element_with_content('span', \"Note: By adding a transaction your holding's value will be overwritten\")\n @warning.append element_with_content('em', \"You will need to add all sale and purchases for this share to see correct yield\")\n @warning\n\n newTransactionForm: ->\n @form = form_element(\"/portfolios/#{@id}/transactions\", 'POST', 'new_transaction')\n @form.classList.add 'material-form', 'transaction'\n @form.append @selectHoldingInput() if @type is 2\n @form.append @transactionDateInput()\n @form.append @quantityInput() if @type is 1 or @type is 2\n @form.append @priceAndCurrencyInput(@priceInputLabel())\n @form.append @exchangeRateInput() if @type is 1 or @type is 2\n @form.append @commissionInput() if @type is 1 or @type is 2\n @form.append @stampDutyInput() if @type is 1 or @type is 2\n @form.append @totalBox()\n @form.append @formButtons()\n @form.addEventListener 'submit', (e) => @formSubmitted(e)\n @form\n\n formSubmitted: (e) ->\n e.preventDefault()\n return false unless @validateForm()\n @submitButton.setAttribute('disabled', true)\n params = form_params('#new_transaction')\n params.append('transaction[transaction_type]', @type)\n params.append('transaction[share_id]', @share.id) if @share and @type is 1\n params.append('transaction[holding_id]', @holding.id) if @holding and @type is 2\n params.append('transaction[currency_id]', @selectedCurrencyField('value'))\n fetch(\"/portfolios/#{@id}/transactions\", method: 'POST', body: params, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}).then (response) => @handleFormResponse(response)\n\n validateForm: ->\n errors = @validateCommonFormFields()\n if @type is 1\n errors.push \"A company is required. Use the search box to find the security by name or ticker\" unless @share\n if @type is 2\n errors.push \"The holding is required. Select from the dropdown\" unless @holding\n\n @showErrors(errors) if errors.length > 0\n errors.length == 0\n\n handleFormResponse: (response) ->\n response.json().then (json) =>\n if json.success\n FlashMessage.success \"Transaction created successfully\"\n EventTracking.track('CreateTransaction')\n @parent.reload()\n @scrollToContent()\n else\n @submitButton.removeAttribute('disabled')\n FlashMessage.error \"Error creating this transaction\"\n @showErrors(json.errors)\n\n selectShareInput: ->\n @search = new CompanySearchForm(true)\n @search.form()\n\n selectHoldingInput: ->\n element_with_content('div', @selectHoldingOptions(), 'sell', 'input', 'holding')\n\n selectHoldingOptions: ->\n @holdingsSelect = @emptySelect 'transaction[holding_id]', 'transaction_holding_id'\n @holdingsSelect.addEventListener 'change', (e) => @holdingSelected(e.detail.value)\n option = element_with_content('option', '- select a holding -')\n option.value = ''\n @holdingsSelect.append option\n @holdingsSelect\n\n loadHoldingList: ->\n fetch(\"/portfolios/#{@id}/holdings.json\").then (response) => response.json().then (json) =>\n @addHoldings(json.holdings)\n\n addHoldings: (holdings) ->\n @holdings = {}\n @holdings[holding.id] = holding for holding in holdings\n\n @choices = new Choices(@holdingsSelect, shouldSort: false)\n options = []\n options.push(@holdingOption(holding)) for holding in holdings\n @choices.setChoices options, 'value', 'label', false\n @holdingsSelect.addEventListener 'showDropdown', => @step2.classList.add 'allow-overflow'\n @holdingsSelect.addEventListener 'hideDropdown', => @step2.classList.remove 'allow-overflow'\n\n holdingOption: (holding) ->\n value: holding.id,\n label: \"#{holding.ticker} #{holding.share}\"\n\n holdingSelected: (@holdingId) ->\n @holding = @holdings[@holdingId]\n if @holding\n @setFieldValue document.querySelector('.quantity'), parseInt(@holding.quantity.replace(/,/g, ''))\n @setSelectedOption(@holding)\n @updateTotal()\n\n setWarningMessageVisible: (shown) ->\n if shown\n @warning.classList.add('shown')\n else\n @warning.classList.remove('shown')\n\n formTitle: ->\n switch @type\n when 1 then 'Share Purchase'\n when 2 then 'Share Sale'\n when 3 then 'Deposit Funds'\n when 4 then 'Withdraw Funds'\n\n suggestedShareSelected: (@share) -> @setSelectedOption(@share)\n\n setSelectedOption: (share_or_holding) ->\n @setWarningMessageVisible(share_or_holding.no_trans)\n if share_or_holding.pr_lo\n @setFieldValue document.querySelector('.price'), MoneyFormat.formatForInput(share_or_holding.pr_lo)\n @selectCurrencyOption(@transactionCurrencyField('id'))\n else\n @setFieldValue document.querySelector('.price'), MoneyFormat.formatForInput(share_or_holding.pr)\n @selectCurrencyOption(share_or_holding.curid)\n @currencySelected()\n if share_or_holding.sd\n document.querySelector('.stamp_duty').classList.remove('hidden')\n else\n document.querySelector('.stamp_duty').classList.add('hidden')","import {GeneratorTab} from 'generator/generator_tab'\nimport {User} from 'utils/user'\nimport {Transaction} from 'generator/transaction'\nimport {TransactionHolding} from 'generator/transaction_holding'\nimport {NewTransactionForm} from 'generator/new_transaction_form'\nimport {element_with_class, element_with_content, link_button, submit_button} from 'utils/material_elements'\nimport {PopupMessage} from 'components/popup_message'\nimport {MoneyFormat} from 'utils/money_format'\n\nexport class Transactions extends GeneratorTab\n \n load: ->\n fetch(\"/portfolios/#{@id}/transactions.json\").then (response) => response.json().then (json) =>\n @buildPage(json)\n @setPortfolioValue(json)\n\n buildPage: (@json) ->\n @emptyTab()\n grid = element_with_class('div', 'mdc-layout-grid__cell--span-12')\n grid.append @buttonsAndBalance() if @json.can_edit or @json.close_bal\n grid.append @transactionContainer() if @json.transactions.length > 0\n grid.append @holdingsDiv() if @json.transactions.length > 0 and @json.holdings.length > 0\n grid.append @bottomBar() if @json.close_bal and @json.transactions.length > 0\n grid.append(@emptyMessage()) if @json.transactions.length is 0\n @tab.append grid\n\n buttonsAndBalance: ->\n div = element_with_class('div', 'top-bar')\n div.classList.add 'with-buttons' if @json.can_edit\n div.append @buttons() if @json.can_edit\n div.append @closingBalance() if @json.close_bal\n div\n\n emptyMessage: -> element_with_content('div', 'No transactions', 'notice')\n transactionContainer: -> element_with_content('div', @transactionList(), 'table-container')\n transactionList: -> element_with_content('div', @transactionTable(), 'mdc-data-table', 'transactions-table')\n transactionTable: ->\n table = element_with_class('table', 'mdc-data-table__table')\n table.append @tableHeader()\n table.append @tableBody()\n table\n\n tableHeader: -> element_with_content('THEAD', @headerRow())\n headerRow: ->\n tr = element_with_class('tr', 'mdc-data-table__header-row') \n tr.append element_with_content('th', 'Date', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Company', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Type', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Amount', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Balance', 'mdc-data-table__header-cell') if @json.close_bal\n tr\n\n tableBody: ->\n body = element_with_class('tbody', 'mdc-data-table__content')\n body.append @transactionRow(row) for row in @json.transactions\n body\n\n transactionRow: (transaction) ->\n t = new Transaction(transaction, this, @json.open_bal, @json.can_edit)\n t.html()\n\n holdingsDiv: ->\n div = element_with_content('div', element_with_content('h2', 'Holdings without transactions', 'mdc-typography--headline5'), 'holding-without-transactions')\n div.append @holdingsContainer()\n div\n\n holdingsContainer: -> element_with_content('div', @holdingsList(), 'table-container')\n holdingsList: -> element_with_content('div', @holdingsTable(), 'mdc-data-table', 'holdings-table')\n holdingsTable: ->\n table = element_with_class('table', 'mdc-data-table__table')\n table.append @holdingsTableHeader()\n table.append @holdingsTableBody()\n table\n\n holdingsTableHeader: -> element_with_content('THEAD', @holdingsHeaderRow())\n holdingsHeaderRow: ->\n tr = element_with_class('tr', 'mdc-data-table__header-row') \n tr.append element_with_content('th', 'Company', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Outlay', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Dividends', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Sold', 'mdc-data-table__header-cell')\n tr.append element_with_content('th', 'Balance', 'mdc-data-table__header-cell') if @json.close_bal\n tr\n\n holdingsTableBody: ->\n body = element_with_class('tbody', 'mdc-data-table__content')\n body.append @holdingRow(row) for row in @json.holdings\n body\n\n holdingRow: (holding) ->\n t = new TransactionHolding(holding, this, @json.open_bal)\n t.html()\n\n bottomBar: -> element_with_content('div', @openingBalance(), 'bottom-bar')\n closingBalance: -> @balanceRow 'Closing Balance', @json.close_bal\n openingBalance: -> @balanceRow 'Opening Balance', @json.open_bal\n\n balanceRow: (text, val) ->\n div = element_with_class('div', 'balance')\n div.append element_with_content('span', text, 'mdc-typography--caption')\n div.append element_with_content('div', MoneyFormat.formatFull(val, @json.currency.code), 'amount', 'mdc-typography--headline6')\n div.classList.add('neg') if val < 0\n div\n\n buttons: ->\n div = element_with_class('div', 'link-buttons')\n div.append @addTransactionButton()\n div.append @exportTransactionsButton()\n div\n\n addTransactionButton: ->\n button = submit_button('Add Transaction', true, false)\n button.addEventListener 'click', (e) => @loadNewTransactionForm(e)\n button\n\n loadNewTransactionForm: (e) ->\n e.preventDefault()\n form = new NewTransactionForm(@id, this)\n form.load()\n\n exportTransactionsButton: ->\n button = submit_button('Export to Excel', false, false, true)\n button.addEventListener 'click', (e) => @exportTransactionsClicked(e)\n button.setAttribute('disabled', true) if @json.transactions.length is 0\n button\n\n exportTransactionsClicked: (e) ->\n if User.isPaidActive()\n document.location = @exportUrl()\n else\n e.preventDefault()\n @showNotPaidPopup()\n\n exportUrl: -> if User.isPaidActive() then \"/portfolios/#{@id}/transactions/export.xls\" else '#transactions'\n\n showNotPaidPopup: ->\n PopupMessage.alert(\"Sorry, this feature is only available on paid subscriptions.\")\n\n paymentLinks: ->\n $('
')\n .addClass('payment-links')\n .append $('').addClass('orange-button').attr('href', '/payments/new').text(\"Pay For DividendMax\")\n .append $('').addClass('cancel').attr('href', '#transactions').text(\"Cancel\").on('click', => @popup.closePopup())\n\n portfolioCurrency: ->\n @json.currency","/**\n * @license\n * Copyright 2020 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/**\n * Priorities for the announce function\n */\nexport var AnnouncerPriority;\n\n(function (AnnouncerPriority) {\n AnnouncerPriority[\"POLITE\"] = \"polite\";\n AnnouncerPriority[\"ASSERTIVE\"] = \"assertive\";\n})(AnnouncerPriority || (AnnouncerPriority = {}));\n/**\n * Announces the given message with optional priority, defaulting to \"polite\"\n */\n\n\nexport function announce(message, priority) {\n Announcer.getInstance().say(message, priority);\n}\n\nvar Announcer =\n/** @class */\nfunction () {\n // Constructor made private to ensure only the singleton is used\n function Announcer() {\n this.liveRegions = new Map();\n }\n\n Announcer.getInstance = function () {\n if (!Announcer.instance) {\n Announcer.instance = new Announcer();\n }\n\n return Announcer.instance;\n };\n\n Announcer.prototype.say = function (message, priority) {\n if (priority === void 0) {\n priority = AnnouncerPriority.POLITE;\n }\n\n var liveRegion = this.getLiveRegion(priority); // Reset the region to pick up the message, even if the message is the\n // exact same as before.\n\n liveRegion.textContent = ''; // Timeout is necessary for screen readers like NVDA and VoiceOver.\n\n setTimeout(function () {\n liveRegion.textContent = message;\n document.addEventListener('click', clearLiveRegion);\n }, 1);\n\n function clearLiveRegion() {\n liveRegion.textContent = '';\n document.removeEventListener('click', clearLiveRegion);\n }\n };\n\n Announcer.prototype.getLiveRegion = function (priority) {\n var existingLiveRegion = this.liveRegions.get(priority);\n\n if (existingLiveRegion && document.body.contains(existingLiveRegion)) {\n return existingLiveRegion;\n }\n\n var liveRegion = this.createLiveRegion(priority);\n this.liveRegions.set(priority, liveRegion);\n return liveRegion;\n };\n\n Announcer.prototype.createLiveRegion = function (priority) {\n var el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '-9999px';\n el.style.left = '-9999px';\n el.style.height = '1px';\n el.style.overflow = 'hidden';\n el.setAttribute('aria-atomic', 'true');\n el.setAttribute('aria-live', priority);\n document.body.appendChild(el);\n return el;\n };\n\n return Announcer;\n}();","/**\n * @license\n * Copyright 2020 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 InteractionTrigger;\n\n(function (InteractionTrigger) {\n InteractionTrigger[InteractionTrigger[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n InteractionTrigger[InteractionTrigger[\"CLICK\"] = 1] = \"CLICK\";\n InteractionTrigger[InteractionTrigger[\"BACKSPACE_KEY\"] = 2] = \"BACKSPACE_KEY\";\n InteractionTrigger[InteractionTrigger[\"DELETE_KEY\"] = 3] = \"DELETE_KEY\";\n InteractionTrigger[InteractionTrigger[\"SPACEBAR_KEY\"] = 4] = \"SPACEBAR_KEY\";\n InteractionTrigger[InteractionTrigger[\"ENTER_KEY\"] = 5] = \"ENTER_KEY\";\n})(InteractionTrigger || (InteractionTrigger = {}));\n\nexport var strings = {\n ARIA_HIDDEN: 'aria-hidden',\n INTERACTION_EVENT: 'MDCChipTrailingAction:interaction',\n NAVIGATION_EVENT: 'MDCChipTrailingAction:navigation',\n TAB_INDEX: 'tabindex'\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 */\nexport var Direction;\n\n(function (Direction) {\n Direction[\"LEFT\"] = \"left\";\n Direction[\"RIGHT\"] = \"right\";\n})(Direction || (Direction = {}));\n\nexport var EventSource;\n\n(function (EventSource) {\n EventSource[\"PRIMARY\"] = \"primary\";\n EventSource[\"TRAILING\"] = \"trailing\";\n EventSource[\"NONE\"] = \"none\";\n})(EventSource || (EventSource = {}));\n\nexport var strings = {\n ADDED_ANNOUNCEMENT_ATTRIBUTE: 'data-mdc-chip-added-announcement',\n ARIA_CHECKED: 'aria-checked',\n ARROW_DOWN_KEY: 'ArrowDown',\n ARROW_LEFT_KEY: 'ArrowLeft',\n ARROW_RIGHT_KEY: 'ArrowRight',\n ARROW_UP_KEY: 'ArrowUp',\n BACKSPACE_KEY: 'Backspace',\n CHECKMARK_SELECTOR: '.mdc-chip__checkmark',\n DELETE_KEY: 'Delete',\n END_KEY: 'End',\n ENTER_KEY: 'Enter',\n ENTRY_ANIMATION_NAME: 'mdc-chip-entry',\n HOME_KEY: 'Home',\n IE_ARROW_DOWN_KEY: 'Down',\n IE_ARROW_LEFT_KEY: 'Left',\n IE_ARROW_RIGHT_KEY: 'Right',\n IE_ARROW_UP_KEY: 'Up',\n IE_DELETE_KEY: 'Del',\n INTERACTION_EVENT: 'MDCChip:interaction',\n LEADING_ICON_SELECTOR: '.mdc-chip__icon--leading',\n NAVIGATION_EVENT: 'MDCChip:navigation',\n PRIMARY_ACTION_SELECTOR: '.mdc-chip__primary-action',\n REMOVED_ANNOUNCEMENT_ATTRIBUTE: 'data-mdc-chip-removed-announcement',\n REMOVAL_EVENT: 'MDCChip:removal',\n SELECTION_EVENT: 'MDCChip:selection',\n SPACEBAR_KEY: ' ',\n TAB_INDEX: 'tabindex',\n TRAILING_ACTION_SELECTOR: '.mdc-chip-trailing-action',\n TRAILING_ICON_INTERACTION_EVENT: 'MDCChip:trailingIconInteraction',\n TRAILING_ICON_SELECTOR: '.mdc-chip__icon--trailing'\n};\nexport var cssClasses = {\n CHECKMARK: 'mdc-chip__checkmark',\n CHIP_EXIT: 'mdc-chip--exit',\n DELETABLE: 'mdc-chip--deletable',\n EDITABLE: 'mdc-chip--editable',\n EDITING: 'mdc-chip--editing',\n HIDDEN_LEADING_ICON: 'mdc-chip__icon--leading-hidden',\n LEADING_ICON: 'mdc-chip__icon--leading',\n PRIMARY_ACTION: 'mdc-chip__primary-action',\n PRIMARY_ACTION_FOCUSED: 'mdc-chip--primary-action-focused',\n SELECTED: 'mdc-chip--selected',\n TEXT: 'mdc-chip__text',\n TRAILING_ACTION: 'mdc-chip__trailing-action',\n TRAILING_ICON: 'mdc-chip__icon--trailing'\n};\nexport var navigationKeys = new Set(); // IE11 has no support for new Set with iterable so we need to initialize this by hand\n\nnavigationKeys.add(strings.ARROW_LEFT_KEY);\nnavigationKeys.add(strings.ARROW_RIGHT_KEY);\nnavigationKeys.add(strings.ARROW_DOWN_KEY);\nnavigationKeys.add(strings.ARROW_UP_KEY);\nnavigationKeys.add(strings.END_KEY);\nnavigationKeys.add(strings.HOME_KEY);\nnavigationKeys.add(strings.IE_ARROW_LEFT_KEY);\nnavigationKeys.add(strings.IE_ARROW_RIGHT_KEY);\nnavigationKeys.add(strings.IE_ARROW_DOWN_KEY);\nnavigationKeys.add(strings.IE_ARROW_UP_KEY);\nexport var jumpChipKeys = new Set(); // IE11 has no support for new Set with iterable so we need to initialize this by hand\n\njumpChipKeys.add(strings.ARROW_UP_KEY);\njumpChipKeys.add(strings.ARROW_DOWN_KEY);\njumpChipKeys.add(strings.HOME_KEY);\njumpChipKeys.add(strings.END_KEY);\njumpChipKeys.add(strings.IE_ARROW_UP_KEY);\njumpChipKeys.add(strings.IE_ARROW_DOWN_KEY);","/**\n * @license\n * Copyright 2020 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 { isNavigationEvent, KEY, normalizeKey } from '@material/dom/keyboard';\nimport { InteractionTrigger, strings } from './constants';\n\nvar MDCChipTrailingActionFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCChipTrailingActionFoundation, _super);\n\n function MDCChipTrailingActionFoundation(adapter) {\n return _super.call(this, __assign(__assign({}, MDCChipTrailingActionFoundation.defaultAdapter), adapter)) || this;\n }\n\n Object.defineProperty(MDCChipTrailingActionFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipTrailingActionFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n focus: function () {\n return undefined;\n },\n getAttribute: function () {\n return null;\n },\n setAttribute: function () {\n return undefined;\n },\n notifyInteraction: function () {\n return undefined;\n },\n notifyNavigation: function () {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n\n MDCChipTrailingActionFoundation.prototype.handleClick = function (evt) {\n evt.stopPropagation();\n this.adapter.notifyInteraction(InteractionTrigger.CLICK);\n };\n\n MDCChipTrailingActionFoundation.prototype.handleKeydown = function (evt) {\n evt.stopPropagation();\n var key = normalizeKey(evt);\n\n if (this.shouldNotifyInteractionFromKey_(key)) {\n var trigger = this.getTriggerFromKey_(key);\n this.adapter.notifyInteraction(trigger);\n return;\n }\n\n if (isNavigationEvent(evt)) {\n this.adapter.notifyNavigation(key);\n return;\n }\n };\n\n MDCChipTrailingActionFoundation.prototype.removeFocus = function () {\n this.adapter.setAttribute(strings.TAB_INDEX, '-1');\n };\n\n MDCChipTrailingActionFoundation.prototype.focus = function () {\n this.adapter.setAttribute(strings.TAB_INDEX, '0');\n this.adapter.focus();\n };\n\n MDCChipTrailingActionFoundation.prototype.isNavigable = function () {\n return this.adapter.getAttribute(strings.ARIA_HIDDEN) !== 'true';\n };\n\n MDCChipTrailingActionFoundation.prototype.shouldNotifyInteractionFromKey_ = function (key) {\n var isFromActionKey = key === KEY.ENTER || key === KEY.SPACEBAR;\n var isFromDeleteKey = key === KEY.BACKSPACE || key === KEY.DELETE;\n return isFromActionKey || isFromDeleteKey;\n };\n\n MDCChipTrailingActionFoundation.prototype.getTriggerFromKey_ = function (key) {\n if (key === KEY.SPACEBAR) {\n return InteractionTrigger.SPACEBAR_KEY;\n }\n\n if (key === KEY.ENTER) {\n return InteractionTrigger.ENTER_KEY;\n }\n\n if (key === KEY.DELETE) {\n return InteractionTrigger.DELETE_KEY;\n }\n\n if (key === KEY.BACKSPACE) {\n return InteractionTrigger.BACKSPACE_KEY;\n } // Default case, should never be returned\n\n\n return InteractionTrigger.UNSPECIFIED;\n };\n\n return MDCChipTrailingActionFoundation;\n}(MDCFoundation);\n\nexport { MDCChipTrailingActionFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCChipTrailingActionFoundation;","/**\n * @license\n * Copyright 2020 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 { MDCRipple } from '@material/ripple/component';\nimport { MDCRippleFoundation } from '@material/ripple/foundation';\nimport { strings } from './constants';\nimport { MDCChipTrailingActionFoundation } from './foundation';\n\nvar MDCChipTrailingAction =\n/** @class */\nfunction (_super) {\n __extends(MDCChipTrailingAction, _super);\n\n function MDCChipTrailingAction() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(MDCChipTrailingAction.prototype, \"ripple\", {\n get: function () {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n\n MDCChipTrailingAction.attachTo = function (root) {\n return new MDCChipTrailingAction(root);\n };\n\n MDCChipTrailingAction.prototype.initialize = function (rippleFactory) {\n if (rippleFactory === void 0) {\n rippleFactory = function (el, foundation) {\n return new MDCRipple(el, foundation);\n };\n } // DO NOT INLINE this variable. For backward compatibility, foundations take\n // a Partial. To ensure we don't accidentally omit any\n // methods, we need a separate, strongly typed adapter variable.\n\n\n var rippleAdapter = MDCRipple.createAdapter(this);\n this.ripple_ = rippleFactory(this.root, new MDCRippleFoundation(rippleAdapter));\n };\n\n MDCChipTrailingAction.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.handleClick_ = function (evt) {\n _this.foundation.handleClick(evt);\n };\n\n this.handleKeydown_ = function (evt) {\n _this.foundation.handleKeydown(evt);\n };\n\n this.listen('click', this.handleClick_);\n this.listen('keydown', this.handleKeydown_);\n };\n\n MDCChipTrailingAction.prototype.destroy = function () {\n this.ripple_.destroy();\n this.unlisten('click', this.handleClick_);\n this.unlisten('keydown', this.handleKeydown_);\n\n _super.prototype.destroy.call(this);\n };\n\n MDCChipTrailingAction.prototype.getDefaultFoundation = function () {\n var _this = this; // DO NOT INLINE this variable. For backward compatibility, foundations take\n // a Partial. To ensure we don't accidentally omit any\n // methods, we need a separate, strongly typed adapter variable.\n\n\n var adapter = {\n focus: function () {\n // TODO(b/157231863): Migate MDCComponent#root to HTMLElement\n _this.root.focus();\n },\n getAttribute: function (attr) {\n return _this.root.getAttribute(attr);\n },\n notifyInteraction: function (trigger) {\n return _this.emit(strings.INTERACTION_EVENT, {\n trigger: trigger\n }, true\n /* shouldBubble */\n );\n },\n notifyNavigation: function (key) {\n _this.emit(strings.NAVIGATION_EVENT, {\n key: key\n }, true\n /* shouldBubble */\n );\n },\n setAttribute: function (attr, value) {\n _this.root.setAttribute(attr, value);\n }\n };\n return new MDCChipTrailingActionFoundation(adapter);\n };\n\n MDCChipTrailingAction.prototype.isNavigable = function () {\n return this.foundation.isNavigable();\n };\n\n MDCChipTrailingAction.prototype.focus = function () {\n this.foundation.focus();\n };\n\n MDCChipTrailingAction.prototype.removeFocus = function () {\n this.foundation.removeFocus();\n };\n\n return MDCChipTrailingAction;\n}(MDCComponent);\n\nexport { MDCChipTrailingAction };","/**\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, Direction, EventSource, jumpChipKeys, navigationKeys, strings } from './constants';\nvar emptyClientRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0\n};\nvar FocusBehavior;\n\n(function (FocusBehavior) {\n FocusBehavior[FocusBehavior[\"SHOULD_FOCUS\"] = 0] = \"SHOULD_FOCUS\";\n FocusBehavior[FocusBehavior[\"SHOULD_NOT_FOCUS\"] = 1] = \"SHOULD_NOT_FOCUS\";\n})(FocusBehavior || (FocusBehavior = {}));\n\nvar MDCChipFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCChipFoundation, _super);\n\n function MDCChipFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCChipFoundation.defaultAdapter), adapter)) || this;\n /** Whether a trailing icon click should immediately trigger exit/removal of the chip. */\n\n\n _this.shouldRemoveOnTrailingIconClick_ = true;\n /**\n * Whether the primary action should receive focus on click. Should only be\n * set to true for clients who programmatically give focus to a different\n * element on the page when a chip is clicked (like a menu).\n */\n\n _this.shouldFocusPrimaryActionOnClick_ = true;\n return _this;\n }\n\n Object.defineProperty(MDCChipFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addClass: function () {\n return undefined;\n },\n addClassToLeadingIcon: function () {\n return undefined;\n },\n eventTargetHasClass: function () {\n return false;\n },\n focusPrimaryAction: function () {\n return undefined;\n },\n focusTrailingAction: function () {\n return undefined;\n },\n getAttribute: function () {\n return null;\n },\n getCheckmarkBoundingClientRect: function () {\n return emptyClientRect;\n },\n getComputedStyleValue: function () {\n return '';\n },\n getRootBoundingClientRect: function () {\n return emptyClientRect;\n },\n hasClass: function () {\n return false;\n },\n hasLeadingIcon: function () {\n return false;\n },\n isRTL: function () {\n return false;\n },\n isTrailingActionNavigable: function () {\n return false;\n },\n notifyEditFinish: function () {\n return undefined;\n },\n notifyEditStart: function () {\n return undefined;\n },\n notifyInteraction: function () {\n return undefined;\n },\n notifyNavigation: function () {\n return undefined;\n },\n notifyRemoval: function () {\n return undefined;\n },\n notifySelection: function () {\n return undefined;\n },\n notifyTrailingIconInteraction: function () {\n return undefined;\n },\n removeClass: function () {\n return undefined;\n },\n removeClassFromLeadingIcon: function () {\n return undefined;\n },\n removeTrailingActionFocus: function () {\n return undefined;\n },\n setPrimaryActionAttr: function () {\n return undefined;\n },\n setStyleProperty: function () {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n\n MDCChipFoundation.prototype.isSelected = function () {\n return this.adapter.hasClass(cssClasses.SELECTED);\n };\n\n MDCChipFoundation.prototype.isEditable = function () {\n return this.adapter.hasClass(cssClasses.EDITABLE);\n };\n\n MDCChipFoundation.prototype.isEditing = function () {\n return this.adapter.hasClass(cssClasses.EDITING);\n };\n\n MDCChipFoundation.prototype.setSelected = function (selected) {\n this.setSelected_(selected);\n this.notifySelection_(selected);\n };\n\n MDCChipFoundation.prototype.setSelectedFromChipSet = function (selected, shouldNotifyClients) {\n this.setSelected_(selected);\n\n if (shouldNotifyClients) {\n this.notifyIgnoredSelection_(selected);\n }\n };\n\n MDCChipFoundation.prototype.getShouldRemoveOnTrailingIconClick = function () {\n return this.shouldRemoveOnTrailingIconClick_;\n };\n\n MDCChipFoundation.prototype.setShouldRemoveOnTrailingIconClick = function (shouldRemove) {\n this.shouldRemoveOnTrailingIconClick_ = shouldRemove;\n };\n\n MDCChipFoundation.prototype.setShouldFocusPrimaryActionOnClick = function (shouldFocus) {\n this.shouldFocusPrimaryActionOnClick_ = shouldFocus;\n };\n\n MDCChipFoundation.prototype.getDimensions = function () {\n var _this = this;\n\n var getRootRect = function () {\n return _this.adapter.getRootBoundingClientRect();\n };\n\n var getCheckmarkRect = function () {\n return _this.adapter.getCheckmarkBoundingClientRect();\n }; // When a chip has a checkmark and not a leading icon, the bounding rect changes in size depending on the current\n // size of the checkmark.\n\n\n if (!this.adapter.hasLeadingIcon()) {\n var checkmarkRect = getCheckmarkRect();\n\n if (checkmarkRect) {\n var rootRect = getRootRect(); // Checkmark is a square, meaning the client rect's width and height are identical once the animation completes.\n // However, the checkbox is initially hidden by setting the width to 0.\n // To account for an initial width of 0, we use the checkbox's height instead (which equals the end-state width)\n // when adding it to the root client rect's width.\n\n return {\n bottom: rootRect.bottom,\n height: rootRect.height,\n left: rootRect.left,\n right: rootRect.right,\n top: rootRect.top,\n width: rootRect.width + checkmarkRect.height\n };\n }\n }\n\n return getRootRect();\n };\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n\n\n MDCChipFoundation.prototype.beginExit = function () {\n this.adapter.addClass(cssClasses.CHIP_EXIT);\n };\n\n MDCChipFoundation.prototype.handleClick = function () {\n this.adapter.notifyInteraction();\n this.setPrimaryActionFocusable_(this.getFocusBehavior_());\n };\n\n MDCChipFoundation.prototype.handleDoubleClick = function () {\n if (this.isEditable()) {\n this.startEditing();\n }\n };\n /**\n * Handles a transition end event on the root element.\n */\n\n\n MDCChipFoundation.prototype.handleTransitionEnd = function (evt) {\n var _this = this; // Handle transition end event on the chip when it is about to be removed.\n\n\n var shouldHandle = this.adapter.eventTargetHasClass(evt.target, cssClasses.CHIP_EXIT);\n var widthIsAnimating = evt.propertyName === 'width';\n var opacityIsAnimating = evt.propertyName === 'opacity';\n\n if (shouldHandle && opacityIsAnimating) {\n // See: https://css-tricks.com/using-css-transitions-auto-dimensions/#article-header-id-5\n var chipWidth_1 = this.adapter.getComputedStyleValue('width'); // On the next frame (once we get the computed width), explicitly set the chip's width\n // to its current pixel width, so we aren't transitioning out of 'auto'.\n\n requestAnimationFrame(function () {\n _this.adapter.setStyleProperty('width', chipWidth_1); // To mitigate jitter, start transitioning padding and margin before width.\n\n\n _this.adapter.setStyleProperty('padding', '0');\n\n _this.adapter.setStyleProperty('margin', '0'); // On the next frame (once width is explicitly set), transition width to 0.\n\n\n requestAnimationFrame(function () {\n _this.adapter.setStyleProperty('width', '0');\n });\n });\n return;\n }\n\n if (shouldHandle && widthIsAnimating) {\n this.removeFocus();\n var removedAnnouncement = this.adapter.getAttribute(strings.REMOVED_ANNOUNCEMENT_ATTRIBUTE);\n this.adapter.notifyRemoval(removedAnnouncement);\n } // Handle a transition end event on the leading icon or checkmark, since the transition end event bubbles.\n\n\n if (!opacityIsAnimating) {\n return;\n }\n\n var shouldHideLeadingIcon = this.adapter.eventTargetHasClass(evt.target, cssClasses.LEADING_ICON) && this.adapter.hasClass(cssClasses.SELECTED);\n var shouldShowLeadingIcon = this.adapter.eventTargetHasClass(evt.target, cssClasses.CHECKMARK) && !this.adapter.hasClass(cssClasses.SELECTED);\n\n if (shouldHideLeadingIcon) {\n this.adapter.addClassToLeadingIcon(cssClasses.HIDDEN_LEADING_ICON);\n return;\n }\n\n if (shouldShowLeadingIcon) {\n this.adapter.removeClassFromLeadingIcon(cssClasses.HIDDEN_LEADING_ICON);\n return;\n }\n };\n\n MDCChipFoundation.prototype.handleFocusIn = function (evt) {\n // Early exit if the event doesn't come from the primary action\n if (!this.eventFromPrimaryAction_(evt)) {\n return;\n }\n\n this.adapter.addClass(cssClasses.PRIMARY_ACTION_FOCUSED);\n };\n\n MDCChipFoundation.prototype.handleFocusOut = function (evt) {\n // Early exit if the event doesn't come from the primary action\n if (!this.eventFromPrimaryAction_(evt)) {\n return;\n }\n\n if (this.isEditing()) {\n this.finishEditing();\n }\n\n this.adapter.removeClass(cssClasses.PRIMARY_ACTION_FOCUSED);\n };\n /**\n * Handles an interaction event on the trailing icon element. This is used to\n * prevent the ripple from activating on interaction with the trailing icon.\n */\n\n\n MDCChipFoundation.prototype.handleTrailingActionInteraction = function () {\n this.adapter.notifyTrailingIconInteraction();\n this.removeChip_();\n };\n /**\n * Handles a keydown event from the root element.\n */\n\n\n MDCChipFoundation.prototype.handleKeydown = function (evt) {\n if (this.isEditing()) {\n if (this.shouldFinishEditing(evt)) {\n evt.preventDefault();\n this.finishEditing();\n } // When editing, the foundation should only handle key events that finish\n // the editing process.\n\n\n return;\n }\n\n if (this.isEditable()) {\n if (this.shouldStartEditing(evt)) {\n evt.preventDefault();\n this.startEditing();\n }\n }\n\n if (this.shouldNotifyInteraction_(evt)) {\n this.adapter.notifyInteraction();\n this.setPrimaryActionFocusable_(this.getFocusBehavior_());\n return;\n }\n\n if (this.isDeleteAction_(evt)) {\n evt.preventDefault();\n this.removeChip_();\n return;\n } // Early exit if the key is not usable\n\n\n if (!navigationKeys.has(evt.key)) {\n return;\n } // Prevent default behavior for movement keys which could include scrolling\n\n\n evt.preventDefault();\n this.focusNextAction_(evt.key, EventSource.PRIMARY);\n };\n\n MDCChipFoundation.prototype.handleTrailingActionNavigation = function (evt) {\n return this.focusNextAction_(evt.detail.key, EventSource.TRAILING);\n };\n /**\n * Called by the chip set to remove focus from the chip actions.\n */\n\n\n MDCChipFoundation.prototype.removeFocus = function () {\n this.adapter.setPrimaryActionAttr(strings.TAB_INDEX, '-1');\n this.adapter.removeTrailingActionFocus();\n };\n /**\n * Called by the chip set to focus the primary action.\n *\n */\n\n\n MDCChipFoundation.prototype.focusPrimaryAction = function () {\n this.setPrimaryActionFocusable_(FocusBehavior.SHOULD_FOCUS);\n };\n /**\n * Called by the chip set to focus the trailing action (if present), otherwise\n * gives focus to the trailing action.\n */\n\n\n MDCChipFoundation.prototype.focusTrailingAction = function () {\n var trailingActionIsNavigable = this.adapter.isTrailingActionNavigable();\n\n if (trailingActionIsNavigable) {\n this.adapter.setPrimaryActionAttr(strings.TAB_INDEX, '-1');\n this.adapter.focusTrailingAction();\n return;\n }\n\n this.focusPrimaryAction();\n };\n\n MDCChipFoundation.prototype.setPrimaryActionFocusable_ = function (focusBehavior) {\n this.adapter.setPrimaryActionAttr(strings.TAB_INDEX, '0');\n\n if (focusBehavior === FocusBehavior.SHOULD_FOCUS) {\n this.adapter.focusPrimaryAction();\n }\n\n this.adapter.removeTrailingActionFocus();\n };\n\n MDCChipFoundation.prototype.getFocusBehavior_ = function () {\n if (this.shouldFocusPrimaryActionOnClick_) {\n return FocusBehavior.SHOULD_FOCUS;\n }\n\n return FocusBehavior.SHOULD_NOT_FOCUS;\n };\n\n MDCChipFoundation.prototype.focusNextAction_ = function (key, source) {\n var isTrailingActionNavigable = this.adapter.isTrailingActionNavigable();\n var dir = this.getDirection_(key); // Early exit if the key should jump chips\n\n if (jumpChipKeys.has(key) || !isTrailingActionNavigable) {\n return this.adapter.notifyNavigation(key, source);\n }\n\n if (source === EventSource.PRIMARY && dir === Direction.RIGHT) {\n return this.focusTrailingAction();\n }\n\n if (source === EventSource.TRAILING && dir === Direction.LEFT) {\n return this.focusPrimaryAction();\n }\n\n this.adapter.notifyNavigation(key, EventSource.NONE);\n };\n\n MDCChipFoundation.prototype.getDirection_ = function (key) {\n var isRTL = this.adapter.isRTL();\n var isLeftKey = key === strings.ARROW_LEFT_KEY || key === strings.IE_ARROW_LEFT_KEY;\n var isRightKey = key === strings.ARROW_RIGHT_KEY || key === strings.IE_ARROW_RIGHT_KEY;\n\n if (!isRTL && isLeftKey || isRTL && isRightKey) {\n return Direction.LEFT;\n }\n\n return Direction.RIGHT;\n };\n\n MDCChipFoundation.prototype.removeChip_ = function () {\n if (this.shouldRemoveOnTrailingIconClick_) {\n this.beginExit();\n }\n };\n\n MDCChipFoundation.prototype.shouldStartEditing = function (evt) {\n return this.eventFromPrimaryAction_(evt) && evt.key === strings.ENTER_KEY;\n };\n\n MDCChipFoundation.prototype.shouldFinishEditing = function (evt) {\n return evt.key === strings.ENTER_KEY;\n };\n\n MDCChipFoundation.prototype.shouldNotifyInteraction_ = function (evt) {\n return evt.key === strings.ENTER_KEY || evt.key === strings.SPACEBAR_KEY;\n };\n\n MDCChipFoundation.prototype.isDeleteAction_ = function (evt) {\n var isDeletable = this.adapter.hasClass(cssClasses.DELETABLE);\n return isDeletable && (evt.key === strings.BACKSPACE_KEY || evt.key === strings.DELETE_KEY || evt.key === strings.IE_DELETE_KEY);\n };\n\n MDCChipFoundation.prototype.setSelected_ = function (selected) {\n if (selected) {\n this.adapter.addClass(cssClasses.SELECTED);\n this.adapter.setPrimaryActionAttr(strings.ARIA_CHECKED, 'true');\n } else {\n this.adapter.removeClass(cssClasses.SELECTED);\n this.adapter.setPrimaryActionAttr(strings.ARIA_CHECKED, 'false');\n }\n };\n\n MDCChipFoundation.prototype.notifySelection_ = function (selected) {\n this.adapter.notifySelection(selected, false);\n };\n\n MDCChipFoundation.prototype.notifyIgnoredSelection_ = function (selected) {\n this.adapter.notifySelection(selected, true);\n };\n\n MDCChipFoundation.prototype.eventFromPrimaryAction_ = function (evt) {\n return this.adapter.eventTargetHasClass(evt.target, cssClasses.PRIMARY_ACTION);\n };\n\n MDCChipFoundation.prototype.startEditing = function () {\n this.adapter.addClass(cssClasses.EDITING);\n this.adapter.notifyEditStart();\n };\n\n MDCChipFoundation.prototype.finishEditing = function () {\n this.adapter.removeClass(cssClasses.EDITING);\n this.adapter.notifyEditFinish();\n };\n\n return MDCChipFoundation;\n}(MDCFoundation);\n\nexport { MDCChipFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCChipFoundation;","/**\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 { MDCRipple } from '@material/ripple/component';\nimport { MDCRippleFoundation } from '@material/ripple/foundation';\nimport { MDCChipTrailingAction } from '../trailingaction/component';\nimport { strings as trailingActionStrings } from '../trailingaction/constants';\nimport { strings } from './constants';\nimport { MDCChipFoundation } from './foundation';\n\nvar MDCChip =\n/** @class */\nfunction (_super) {\n __extends(MDCChip, _super);\n\n function MDCChip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(MDCChip.prototype, \"selected\", {\n /**\n * @return Whether the chip is selected.\n */\n get: function () {\n return this.foundation.isSelected();\n },\n\n /**\n * Sets selected state on the chip.\n */\n set: function (selected) {\n this.foundation.setSelected(selected);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChip.prototype, \"shouldRemoveOnTrailingIconClick\", {\n /**\n * @return Whether a trailing icon click should trigger exit/removal of the chip.\n */\n get: function () {\n return this.foundation.getShouldRemoveOnTrailingIconClick();\n },\n\n /**\n * Sets whether a trailing icon click should trigger exit/removal of the chip.\n */\n set: function (shouldRemove) {\n this.foundation.setShouldRemoveOnTrailingIconClick(shouldRemove);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChip.prototype, \"setShouldFocusPrimaryActionOnClick\", {\n /**\n * Sets whether a clicking on the chip should focus the primary action.\n */\n set: function (shouldFocus) {\n this.foundation.setShouldFocusPrimaryActionOnClick(shouldFocus);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChip.prototype, \"ripple\", {\n get: function () {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChip.prototype, \"id\", {\n get: function () {\n return this.root.id;\n },\n enumerable: true,\n configurable: true\n });\n\n MDCChip.attachTo = function (root) {\n return new MDCChip(root);\n };\n\n MDCChip.prototype.initialize = function (rippleFactory, trailingActionFactory) {\n var _this = this;\n\n if (rippleFactory === void 0) {\n rippleFactory = function (el, foundation) {\n return new MDCRipple(el, foundation);\n };\n }\n\n if (trailingActionFactory === void 0) {\n trailingActionFactory = function (el) {\n return new MDCChipTrailingAction(el);\n };\n }\n\n this.leadingIcon_ = this.root.querySelector(strings.LEADING_ICON_SELECTOR);\n this.checkmark_ = this.root.querySelector(strings.CHECKMARK_SELECTOR);\n this.primaryAction_ = this.root.querySelector(strings.PRIMARY_ACTION_SELECTOR);\n var trailingActionEl = this.root.querySelector(strings.TRAILING_ACTION_SELECTOR);\n\n if (trailingActionEl) {\n this.trailingAction_ = trailingActionFactory(trailingActionEl);\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\n\n var rippleAdapter = __assign(__assign({}, MDCRipple.createAdapter(this)), {\n computeBoundingRect: function () {\n return _this.foundation.getDimensions();\n }\n });\n\n this.ripple_ = rippleFactory(this.root, new MDCRippleFoundation(rippleAdapter));\n };\n\n MDCChip.prototype.initialSyncWithDOM = function () {\n var _this = this; // Custom events\n\n\n this.handleTrailingActionInteraction_ = function () {\n _this.foundation.handleTrailingActionInteraction();\n };\n\n this.handleTrailingActionNavigation_ = function (evt) {\n _this.foundation.handleTrailingActionNavigation(evt);\n }; // Native events\n\n\n this.handleClick_ = function () {\n _this.foundation.handleClick();\n };\n\n this.handleKeydown_ = function (evt) {\n _this.foundation.handleKeydown(evt);\n };\n\n this.handleTransitionEnd_ = function (evt) {\n _this.foundation.handleTransitionEnd(evt);\n };\n\n this.handleFocusIn_ = function (evt) {\n _this.foundation.handleFocusIn(evt);\n };\n\n this.handleFocusOut_ = function (evt) {\n _this.foundation.handleFocusOut(evt);\n };\n\n this.listen('transitionend', this.handleTransitionEnd_);\n this.listen('click', this.handleClick_);\n this.listen('keydown', this.handleKeydown_);\n this.listen('focusin', this.handleFocusIn_);\n this.listen('focusout', this.handleFocusOut_);\n\n if (this.trailingAction_) {\n this.listen(trailingActionStrings.INTERACTION_EVENT, this.handleTrailingActionInteraction_);\n this.listen(trailingActionStrings.NAVIGATION_EVENT, this.handleTrailingActionNavigation_);\n }\n };\n\n MDCChip.prototype.destroy = function () {\n this.ripple_.destroy();\n this.unlisten('transitionend', this.handleTransitionEnd_);\n this.unlisten('keydown', this.handleKeydown_);\n this.unlisten('click', this.handleClick_);\n this.unlisten('focusin', this.handleFocusIn_);\n this.unlisten('focusout', this.handleFocusOut_);\n\n if (this.trailingAction_) {\n this.unlisten(trailingActionStrings.INTERACTION_EVENT, this.handleTrailingActionInteraction_);\n this.unlisten(trailingActionStrings.NAVIGATION_EVENT, this.handleTrailingActionNavigation_);\n }\n\n _super.prototype.destroy.call(this);\n };\n /**\n * Begins the exit animation which leads to removal of the chip.\n */\n\n\n MDCChip.prototype.beginExit = function () {\n this.foundation.beginExit();\n };\n\n MDCChip.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\n var adapter = {\n addClass: function (className) {\n return _this.root.classList.add(className);\n },\n addClassToLeadingIcon: function (className) {\n if (_this.leadingIcon_) {\n _this.leadingIcon_.classList.add(className);\n }\n },\n eventTargetHasClass: function (target, className) {\n return target ? target.classList.contains(className) : false;\n },\n focusPrimaryAction: function () {\n if (_this.primaryAction_) {\n _this.primaryAction_.focus();\n }\n },\n focusTrailingAction: function () {\n if (_this.trailingAction_) {\n _this.trailingAction_.focus();\n }\n },\n getAttribute: function (attr) {\n return _this.root.getAttribute(attr);\n },\n getCheckmarkBoundingClientRect: function () {\n return _this.checkmark_ ? _this.checkmark_.getBoundingClientRect() : null;\n },\n getComputedStyleValue: function (propertyName) {\n return window.getComputedStyle(_this.root).getPropertyValue(propertyName);\n },\n getRootBoundingClientRect: function () {\n return _this.root.getBoundingClientRect();\n },\n hasClass: function (className) {\n return _this.root.classList.contains(className);\n },\n hasLeadingIcon: function () {\n return !!_this.leadingIcon_;\n },\n isRTL: function () {\n return window.getComputedStyle(_this.root).getPropertyValue('direction') === 'rtl';\n },\n isTrailingActionNavigable: function () {\n if (_this.trailingAction_) {\n return _this.trailingAction_.isNavigable();\n }\n\n return false;\n },\n notifyInteraction: function () {\n return _this.emit(strings.INTERACTION_EVENT, {\n chipId: _this.id\n }, true\n /* shouldBubble */\n );\n },\n notifyNavigation: function (key, source) {\n return _this.emit(strings.NAVIGATION_EVENT, {\n chipId: _this.id,\n key: key,\n source: source\n }, true\n /* shouldBubble */\n );\n },\n notifyRemoval: function (removedAnnouncement) {\n _this.emit(strings.REMOVAL_EVENT, {\n chipId: _this.id,\n removedAnnouncement: removedAnnouncement\n }, true\n /* shouldBubble */\n );\n },\n notifySelection: function (selected, shouldIgnore) {\n return _this.emit(strings.SELECTION_EVENT, {\n chipId: _this.id,\n selected: selected,\n shouldIgnore: shouldIgnore\n }, true\n /* shouldBubble */\n );\n },\n notifyTrailingIconInteraction: function () {\n return _this.emit(strings.TRAILING_ICON_INTERACTION_EVENT, {\n chipId: _this.id\n }, true\n /* shouldBubble */\n );\n },\n notifyEditStart: function () {},\n notifyEditFinish: function () {},\n removeClass: function (className) {\n return _this.root.classList.remove(className);\n },\n removeClassFromLeadingIcon: function (className) {\n if (_this.leadingIcon_) {\n _this.leadingIcon_.classList.remove(className);\n }\n },\n removeTrailingActionFocus: function () {\n if (_this.trailingAction_) {\n _this.trailingAction_.removeFocus();\n }\n },\n setPrimaryActionAttr: function (attr, value) {\n if (_this.primaryAction_) {\n _this.primaryAction_.setAttribute(attr, value);\n }\n },\n setStyleProperty: function (propertyName, value) {\n return _this.root.style.setProperty(propertyName, value);\n }\n };\n return new MDCChipFoundation(adapter);\n };\n\n MDCChip.prototype.setSelectedFromChipSet = function (selected, shouldNotifyClients) {\n this.foundation.setSelectedFromChipSet(selected, shouldNotifyClients);\n };\n\n MDCChip.prototype.focusPrimaryAction = function () {\n this.foundation.focusPrimaryAction();\n };\n\n MDCChip.prototype.focusTrailingAction = function () {\n this.foundation.focusTrailingAction();\n };\n\n MDCChip.prototype.removeFocus = function () {\n this.foundation.removeFocus();\n };\n\n MDCChip.prototype.remove = function () {\n var parent = this.root.parentNode;\n\n if (parent !== null) {\n parent.removeChild(this.root);\n }\n };\n\n return MDCChip;\n}(MDCComponent);\n\nexport { MDCChip };","/**\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 strings = {\n CHIP_SELECTOR: '.mdc-chip'\n};\nexport var cssClasses = {\n CHOICE: 'mdc-chip-set--choice',\n FILTER: 'mdc-chip-set--filter'\n};","/**\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 { Direction, EventSource, jumpChipKeys, navigationKeys, strings as chipStrings } from '../chip/constants';\nimport { cssClasses, strings } from './constants';\n\nvar MDCChipSetFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCChipSetFoundation, _super);\n\n function MDCChipSetFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCChipSetFoundation.defaultAdapter), adapter)) || this;\n /**\n * The ids of the selected chips in the set. Only used for choice chip set or filter chip set.\n */\n\n\n _this.selectedChipIds_ = [];\n return _this;\n }\n\n Object.defineProperty(MDCChipSetFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipSetFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipSetFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n announceMessage: function () {\n return undefined;\n },\n focusChipPrimaryActionAtIndex: function () {\n return undefined;\n },\n focusChipTrailingActionAtIndex: function () {\n return undefined;\n },\n getChipListCount: function () {\n return -1;\n },\n getIndexOfChipById: function () {\n return -1;\n },\n hasClass: function () {\n return false;\n },\n isRTL: function () {\n return false;\n },\n removeChipAtIndex: function () {\n return undefined;\n },\n removeFocusFromChipAtIndex: function () {\n return undefined;\n },\n selectChipAtIndex: function () {\n return undefined;\n }\n };\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Returns an array of the IDs of all selected chips.\n */\n\n MDCChipSetFoundation.prototype.getSelectedChipIds = function () {\n return this.selectedChipIds_.slice();\n };\n /**\n * Selects the chip with the given id. Deselects all other chips if the chip set is of the choice variant.\n * Does not notify clients of the updated selection state.\n */\n\n\n MDCChipSetFoundation.prototype.select = function (chipId) {\n this.select_(chipId, false);\n };\n /**\n * Handles a chip interaction event\n */\n\n\n MDCChipSetFoundation.prototype.handleChipInteraction = function (_a) {\n var chipId = _a.chipId;\n var index = this.adapter.getIndexOfChipById(chipId);\n this.removeFocusFromChipsExcept_(index);\n\n if (this.adapter.hasClass(cssClasses.CHOICE) || this.adapter.hasClass(cssClasses.FILTER)) {\n this.toggleSelect_(chipId);\n }\n };\n /**\n * Handles a chip selection event, used to handle discrepancy when selection state is set directly on the Chip.\n */\n\n\n MDCChipSetFoundation.prototype.handleChipSelection = function (_a) {\n var chipId = _a.chipId,\n selected = _a.selected,\n shouldIgnore = _a.shouldIgnore; // Early exit if we should ignore the event\n\n if (shouldIgnore) {\n return;\n }\n\n var chipIsSelected = this.selectedChipIds_.indexOf(chipId) >= 0;\n\n if (selected && !chipIsSelected) {\n this.select(chipId);\n } else if (!selected && chipIsSelected) {\n this.deselect_(chipId);\n }\n };\n /**\n * Handles the event when a chip is removed.\n */\n\n\n MDCChipSetFoundation.prototype.handleChipRemoval = function (_a) {\n var chipId = _a.chipId,\n removedAnnouncement = _a.removedAnnouncement;\n\n if (removedAnnouncement) {\n this.adapter.announceMessage(removedAnnouncement);\n }\n\n var index = this.adapter.getIndexOfChipById(chipId);\n this.deselectAndNotifyClients_(chipId);\n this.adapter.removeChipAtIndex(index);\n var maxIndex = this.adapter.getChipListCount() - 1;\n var nextIndex = Math.min(index, maxIndex);\n this.removeFocusFromChipsExcept_(nextIndex); // After removing a chip, we should focus the trailing action for the next chip.\n\n this.adapter.focusChipTrailingActionAtIndex(nextIndex);\n };\n /**\n * Handles a chip navigation event.\n */\n\n\n MDCChipSetFoundation.prototype.handleChipNavigation = function (_a) {\n var chipId = _a.chipId,\n key = _a.key,\n source = _a.source;\n var maxIndex = this.adapter.getChipListCount() - 1;\n var index = this.adapter.getIndexOfChipById(chipId); // Early exit if the index is out of range or the key is unusable\n\n if (index === -1 || !navigationKeys.has(key)) {\n return;\n }\n\n var isRTL = this.adapter.isRTL();\n var isLeftKey = key === chipStrings.ARROW_LEFT_KEY || key === chipStrings.IE_ARROW_LEFT_KEY;\n var isRightKey = key === chipStrings.ARROW_RIGHT_KEY || key === chipStrings.IE_ARROW_RIGHT_KEY;\n var isDownKey = key === chipStrings.ARROW_DOWN_KEY || key === chipStrings.IE_ARROW_DOWN_KEY;\n var shouldIncrement = !isRTL && isRightKey || isRTL && isLeftKey || isDownKey;\n var isHome = key === chipStrings.HOME_KEY;\n var isEnd = key === chipStrings.END_KEY;\n\n if (shouldIncrement) {\n index++;\n } else if (isHome) {\n index = 0;\n } else if (isEnd) {\n index = maxIndex;\n } else {\n index--;\n } // Early exit if the index is out of bounds\n\n\n if (index < 0 || index > maxIndex) {\n return;\n }\n\n this.removeFocusFromChipsExcept_(index);\n this.focusChipAction_(index, key, source);\n };\n\n MDCChipSetFoundation.prototype.focusChipAction_ = function (index, key, source) {\n var shouldJumpChips = jumpChipKeys.has(key);\n\n if (shouldJumpChips && source === EventSource.PRIMARY) {\n return this.adapter.focusChipPrimaryActionAtIndex(index);\n }\n\n if (shouldJumpChips && source === EventSource.TRAILING) {\n return this.adapter.focusChipTrailingActionAtIndex(index);\n }\n\n var dir = this.getDirection_(key);\n\n if (dir === Direction.LEFT) {\n return this.adapter.focusChipTrailingActionAtIndex(index);\n }\n\n if (dir === Direction.RIGHT) {\n return this.adapter.focusChipPrimaryActionAtIndex(index);\n }\n };\n\n MDCChipSetFoundation.prototype.getDirection_ = function (key) {\n var isRTL = this.adapter.isRTL();\n var isLeftKey = key === chipStrings.ARROW_LEFT_KEY || key === chipStrings.IE_ARROW_LEFT_KEY;\n var isRightKey = key === chipStrings.ARROW_RIGHT_KEY || key === chipStrings.IE_ARROW_RIGHT_KEY;\n\n if (!isRTL && isLeftKey || isRTL && isRightKey) {\n return Direction.LEFT;\n }\n\n return Direction.RIGHT;\n };\n /**\n * Deselects the chip with the given id and optionally notifies clients.\n */\n\n\n MDCChipSetFoundation.prototype.deselect_ = function (chipId, shouldNotifyClients) {\n if (shouldNotifyClients === void 0) {\n shouldNotifyClients = false;\n }\n\n var index = this.selectedChipIds_.indexOf(chipId);\n\n if (index >= 0) {\n this.selectedChipIds_.splice(index, 1);\n var chipIndex = this.adapter.getIndexOfChipById(chipId);\n this.adapter.selectChipAtIndex(chipIndex,\n /** isSelected */\n false, shouldNotifyClients);\n }\n };\n /**\n * Deselects the chip with the given id and notifies clients.\n */\n\n\n MDCChipSetFoundation.prototype.deselectAndNotifyClients_ = function (chipId) {\n this.deselect_(chipId, true);\n };\n /**\n * Toggles selection of the chip with the given id.\n */\n\n\n MDCChipSetFoundation.prototype.toggleSelect_ = function (chipId) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n this.deselectAndNotifyClients_(chipId);\n } else {\n this.selectAndNotifyClients_(chipId);\n }\n };\n\n MDCChipSetFoundation.prototype.removeFocusFromChipsExcept_ = function (index) {\n var chipCount = this.adapter.getChipListCount();\n\n for (var i = 0; i < chipCount; i++) {\n if (i !== index) {\n this.adapter.removeFocusFromChipAtIndex(i);\n }\n }\n };\n\n MDCChipSetFoundation.prototype.selectAndNotifyClients_ = function (chipId) {\n this.select_(chipId, true);\n };\n\n MDCChipSetFoundation.prototype.select_ = function (chipId, shouldNotifyClients) {\n if (this.selectedChipIds_.indexOf(chipId) >= 0) {\n return;\n }\n\n if (this.adapter.hasClass(cssClasses.CHOICE) && this.selectedChipIds_.length > 0) {\n var previouslySelectedChip = this.selectedChipIds_[0];\n var previouslySelectedIndex = this.adapter.getIndexOfChipById(previouslySelectedChip);\n this.selectedChipIds_ = [];\n this.adapter.selectChipAtIndex(previouslySelectedIndex,\n /** isSelected */\n false, shouldNotifyClients);\n }\n\n this.selectedChipIds_.push(chipId);\n var index = this.adapter.getIndexOfChipById(chipId);\n this.adapter.selectChipAtIndex(index,\n /** isSelected */\n true, shouldNotifyClients);\n };\n\n return MDCChipSetFoundation;\n}(MDCFoundation);\n\nexport { MDCChipSetFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\nexport default MDCChipSetFoundation;","/**\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 { announce } from '@material/dom/announce';\nimport { MDCChip } from '../chip/component';\nimport { MDCChipFoundation } from '../chip/foundation';\nimport { MDCChipSetFoundation } from './foundation';\nvar _a = MDCChipFoundation.strings,\n INTERACTION_EVENT = _a.INTERACTION_EVENT,\n SELECTION_EVENT = _a.SELECTION_EVENT,\n REMOVAL_EVENT = _a.REMOVAL_EVENT,\n NAVIGATION_EVENT = _a.NAVIGATION_EVENT;\nvar CHIP_SELECTOR = MDCChipSetFoundation.strings.CHIP_SELECTOR;\nvar idCounter = 0;\n\nvar MDCChipSet =\n/** @class */\nfunction (_super) {\n __extends(MDCChipSet, _super);\n\n function MDCChipSet() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MDCChipSet.attachTo = function (root) {\n return new MDCChipSet(root);\n };\n\n Object.defineProperty(MDCChipSet.prototype, \"chips\", {\n get: function () {\n return this.chips_.slice();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCChipSet.prototype, \"selectedChipIds\", {\n /**\n * @return An array of the IDs of all selected chips.\n */\n get: function () {\n return this.foundation.getSelectedChipIds();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param chipFactory A function which creates a new MDCChip.\n */\n\n MDCChipSet.prototype.initialize = function (chipFactory) {\n if (chipFactory === void 0) {\n chipFactory = function (el) {\n return new MDCChip(el);\n };\n }\n\n this.chipFactory_ = chipFactory;\n this.chips_ = this.instantiateChips_(this.chipFactory_);\n };\n\n MDCChipSet.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.chips_.forEach(function (chip) {\n if (chip.id && chip.selected) {\n _this.foundation.select(chip.id);\n }\n });\n\n this.handleChipInteraction_ = function (evt) {\n return _this.foundation.handleChipInteraction(evt.detail);\n };\n\n this.handleChipSelection_ = function (evt) {\n return _this.foundation.handleChipSelection(evt.detail);\n };\n\n this.handleChipRemoval_ = function (evt) {\n return _this.foundation.handleChipRemoval(evt.detail);\n };\n\n this.handleChipNavigation_ = function (evt) {\n return _this.foundation.handleChipNavigation(evt.detail);\n };\n\n this.listen(INTERACTION_EVENT, this.handleChipInteraction_);\n this.listen(SELECTION_EVENT, this.handleChipSelection_);\n this.listen(REMOVAL_EVENT, this.handleChipRemoval_);\n this.listen(NAVIGATION_EVENT, this.handleChipNavigation_);\n };\n\n MDCChipSet.prototype.destroy = function () {\n this.chips_.forEach(function (chip) {\n chip.destroy();\n });\n this.unlisten(INTERACTION_EVENT, this.handleChipInteraction_);\n this.unlisten(SELECTION_EVENT, this.handleChipSelection_);\n this.unlisten(REMOVAL_EVENT, this.handleChipRemoval_);\n this.unlisten(NAVIGATION_EVENT, this.handleChipNavigation_);\n\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds a new chip object to the chip set from the given chip element.\n */\n\n\n MDCChipSet.prototype.addChip = function (chipEl) {\n chipEl.id = chipEl.id || \"mdc-chip-\" + ++idCounter;\n this.chips_.push(this.chipFactory_(chipEl));\n };\n\n MDCChipSet.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\n var adapter = {\n announceMessage: function (message) {\n announce(message);\n },\n focusChipPrimaryActionAtIndex: function (index) {\n _this.chips_[index].focusPrimaryAction();\n },\n focusChipTrailingActionAtIndex: function (index) {\n _this.chips_[index].focusTrailingAction();\n },\n getChipListCount: function () {\n return _this.chips_.length;\n },\n getIndexOfChipById: function (chipId) {\n return _this.findChipIndex_(chipId);\n },\n hasClass: function (className) {\n return _this.root.classList.contains(className);\n },\n isRTL: function () {\n return window.getComputedStyle(_this.root).getPropertyValue('direction') === 'rtl';\n },\n removeChipAtIndex: function (index) {\n if (index >= 0 && index < _this.chips_.length) {\n _this.chips_[index].destroy();\n\n _this.chips_[index].remove();\n\n _this.chips_.splice(index, 1);\n }\n },\n removeFocusFromChipAtIndex: function (index) {\n _this.chips_[index].removeFocus();\n },\n selectChipAtIndex: function (index, selected, shouldNotifyClients) {\n if (index >= 0 && index < _this.chips_.length) {\n _this.chips_[index].setSelectedFromChipSet(selected, shouldNotifyClients);\n }\n }\n };\n return new MDCChipSetFoundation(adapter);\n };\n /**\n * Instantiates chip components on all of the chip set's child chip elements.\n */\n\n\n MDCChipSet.prototype.instantiateChips_ = function (chipFactory) {\n var chipElements = [].slice.call(this.root.querySelectorAll(CHIP_SELECTOR));\n return chipElements.map(function (el) {\n el.id = el.id || \"mdc-chip-\" + ++idCounter;\n return chipFactory(el);\n });\n };\n /**\n * Returns the index of the chip with the given id, or -1 if the chip does not exist.\n */\n\n\n MDCChipSet.prototype.findChipIndex_ = function (chipId) {\n for (var i = 0; i < this.chips_.length; i++) {\n if (this.chips_[i].id === chipId) {\n return i;\n }\n }\n\n return -1;\n };\n\n return MDCChipSet;\n}(MDCComponent);\n\nexport { MDCChipSet };","import {MDCSelect} from '@material/select'\nimport {MDCChipSet} from '@material/chips'\nimport {EmojiFallback} from 'utils/emoji_fallback'\nimport {Tooltips} from 'utils/tooltips'\n\nclass DeclaredDividendsTable\n\n constructor: ->\n @selectedIndexIds = []\n @emoji = new EmojiFallback()\n @tooltips = new Tooltips()\n\n @table = document.querySelector('#content table tbody')\n @loading_icon = document.querySelector('.loading-icon')\n\n @regionSelect = new MDCSelect(document.querySelector('#region-select'))\n @regionSelect.listen 'MDCSelect:change', => @regionSelected(event.detail.value)\n\n @indices = new MDCChipSet(document.querySelector('#index-options'))\n @indices.listen 'MDCChip:selection', (event) => @toggleSelectedIndices()\n\n @regionSelected 1\n\n regionSelected: (region_id) ->\n @selectedRegion = region_id\n @tooltips.hideAll()\n @setVisibleIndices()\n @showLoadingAnimation()\n @downloadDividendData()\n\n setVisibleIndices: ->\n @setIndexVisibility(chip) for chip in document.querySelectorAll('#index-options .mdc-chip')\n @setSelectedIndexIds()\n\n setIndexVisibility: (element) ->\n id = element.getAttribute('id')\n chip = @indices.chips.find (c) -> c.id == id\n chip.selected = element.classList.contains(\"region-\") or element.classList.contains(\"region-#{@selectedRegion}\")\n if chip.selected\n element.classList.add 'visible'\n else\n element.classList.remove 'visible'\n\n toggleSelectedIndices: () ->\n @tooltips.hideAll()\n @setSelectedIndexIds()\n @toggleRowForIndex(row) for row in document.querySelectorAll('#content table tbody tr')\n\n setSelectedIndexIds: ->\n @selectedIndexIds = []\n @selectedIndexIds.push(parseInt(document.querySelector(\"##{id}\").dataset.id)) for id in @indices.selectedChipIds\n\n toggleRowForIndex: (row) ->\n if @isRowIndexSelected(row)\n row.classList.add('visible')\n else\n row.classList.remove('visible')\n\n isRowIndexSelected: (row) ->\n ids = JSON.parse(row.dataset.indexIds)\n for id in ids\n return true if @selectedIndexIds.includes(id)\n false \n\n showLoadingAnimation: ->\n @emptyTable()\n @loading_icon.classList.add 'on'\n\n emptyTable: ->\n @table.removeChild(@table.firstChild) while @table.firstChild \n\n downloadDividendData: ->\n fetch(\"/dividends/declared.json?region=\" + @selectedRegion).then (source) => (source.json()).then (json) => @setTableRows(json)\n\n setTableRows: (rows) ->\n @table.appendChild(@childRow(row)) for row in rows\n @loading_icon.classList.remove 'on'\n\n childRow: (json) ->\n tr = document.createElement('TR')\n tr.classList.add('mdc-data-table__row', 'visible')\n tr.dataset.indexIds = json.ind\n tr.appendChild(@linkToCompany(json))\n tr.appendChild(@rowCell(json.ticker))\n cell = @rowCell(json.flag)\n @emoji.replaceInElement(cell)\n tr.appendChild(cell)\n tr.appendChild(@rowCell(json.mic))\n tr.appendChild(@rowCell(json.price))\n tr.appendChild(@rowCell(json.prev))\n tr.appendChild(@amountAndArrow(json))\n tr.appendChild(@rowCell(json.xdd))\n tr\n\n linkToCompany: (json) ->\n td = document.createElement('TD')\n td.classList.add('mdc-data-table__cell')\n a = document.createElement('A')\n a.setAttribute('href', json.path)\n a.textContent = json.name\n td.appendChild(a)\n td\n\n amountAndArrow: (json) ->\n td = document.createElement('TD')\n td.classList.add('mdc-data-table__cell')\n td.innerHTML = \"#{json.amnt}#{json.icon or ''}\"\n td\n\n rowCell: (text) ->\n td = document.createElement('TD')\n td.classList.add('mdc-data-table__cell')\n td.appendChild(document.createTextNode(text))\n td\n\nnew DeclaredDividendsTable()","import {Tool} from 'tools/tool'\nimport {CookieManager} from 'utils/cookie_manager'\nimport {element_with_class} from 'utils/material_elements'\n\nexport default class OptimizerTable extends Tool\n\n constructor: ->\n @table = document.querySelector('table#optimizer tbody')\n @prepare() if @table != null\n\n prepare: ->\n fetch(@optimizerUrl(), headers: {'X-Requested-With': 'XMLHttpRequest'}).then (response) => @handleResponse(response)\n\n optimizerUrl: ->\n if CookieManager.get(\"optimizer_filtered\")\n market_cap = CookieManager.get(\"optimizer_market_cap_value\") or \"\"\n cover = CookieManager.get(\"optimizer_cover_value\") or \"\"\n cadi = CookieManager.get(\"optimizer_cadi_value\") or \"\"\n fdi = CookieManager.get(\"optimizer_fdi_value\") or \"\"\n country = CookieManager.get(\"optimizer_country_value\") or \"\"\n return \"/tools/optimizer.json?duration=3d&market_cap=#{market_cap}&cover=#{cover}&cadi=#{cadi}&fdi=#{fdi}&country=#{country}&page=1\"\n \"/tools/optimizer.json?duration=3d&cover=2&country=1&page=1\"\n\n handleResponse: (response) ->\n response.json().then (json) =>\n @table.removeChild(@table.firstChild) while @table.firstChild\n @addRow row for row in json.data\n @addEmptyRow() if json.data.length == 0\n\n addRow: (row) ->\n tr = document.createElement('TR')\n tr.classList.add('mdc-data-table__row')\n tr.append @tableCell(row.ann_yield)\n tr.append @nameCell(row)\n tr.append @tableCell(row.divs[0].ex_date)\n @table.append tr\n\n nameCell: (row) ->\n return @tableCell(row.name) if row.name\n @placeholderCell()","import {Tool} from 'tools/tool'\nimport {element_with_class} from 'utils/material_elements'\nimport {CookieManager} from 'utils/cookie_manager'\n\nexport default class CountdownTable extends Tool\n\n constructor: ->\n @table = document.querySelector('body#dashboard table#countdown tbody')\n @prepare() if @table != null\n\n prepare: ->\n fetch(@countdownUrl(), headers: {'X-Requested-With': 'XMLHttpRequest'}).then (response) => @handleResponse(response)\n\n countdownUrl: ->\n country = CookieManager.get(\"countdown_country_value\") or \"\"\n sector = CookieManager.get(\"countdown_sector_value\") or \"\"\n index = CookieManager.get(\"countdown_index_value\") or \"\"\n \"/tools/countdown.json?country=#{country}§or=#{sector}&index=#{index}\"\n\n handleResponse: (response) ->\n response.json().then (json) =>\n @table.removeChild(@table.firstChild) while @table.firstChild\n for row, i in json.dividends\n @addRow row\n break if i > 4\n\n @addEmptyRow() if json.dividends.length == 0\n\n addRow: (row) ->\n tr = element_with_class('tr', 'mdc-data-table__row')\n tr.append @tableCell(row.x)\n tr.append @nameCell(row)\n tr.append @tableCell(row.r)\n @table.append tr\n\n nameCell: (row) ->\n return @tableCell(row.n) if row.n\n @placeholderCell()","export default class WatchlistDividendsTable\n\n constructor: ->\n @table = document.querySelector('table#watchlist-dividends tbody')\n @prepare() if @table != null\n\n prepare: ->\n fetch('/watch_lists/dividends.json', headers: {'X-Requested-With': 'XMLHttpRequest'}).then (response) => @handleResponse(response)\n\n handleResponse: (response) ->\n response.json().then (json) =>\n @table.removeChild(@table.firstChild) while @table.firstChild\n @addRow row for row in json.data\n\n addRow: (row) ->\n tr = document.createElement('TR')\n tr.classList.add('mdc-data-table__row')\n tr.append @tableCell(row.n)\n tr.append @tableCell(row.t)\n tr.append @tableCell(row.a)\n @table.append tr\n\n tableCell: (text) ->\n td = document.createElement('TD')\n td.classList.add('mdc-data-table__cell')\n if text\n td.innerText = text\n else\n td.append @linkToWatchlist()\n td\n\n linkToWatchlist: ->\n a = document.createElement('A')\n a.setAttribute('href', '/begin-free-trial')\n a.innerText = 'Upgrade'\n a","import OptimizerTable from 'tools/optimizer_table'\nimport CountdownTable from 'tools/countdown_table'\nimport WatchlistDividendsTable from 'watchlist_dividends_table'\nimport {CookieManager} from 'utils/cookie_manager'\n\nexport class Dashboard\n\n constructor: ->\n new OptimizerTable()\n new CountdownTable()\n new WatchlistDividendsTable()\n @addPortfolioClickListener()\n\n addPortfolioClickListener: ->\n @addListener(portfolio) for portfolio in document.querySelectorAll('#dashboard-portfolios .mdc-card')\n\n addListener: (portfolio) ->\n portfolio.addEventListener 'click', ->\n CookieManager.set('portfolio', portfolio.dataset.id)\n document.location = '/portfolios'\n\nnew Dashboard() if document.body.id == 'dashboard'","EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\nexport isValidEmailAddress = (email) ->\n EMAIL_REGEX.test(String(email).toLowerCase())\n\nexport isValidPassword = (password) ->\n password.length > 5","import {MDCTextField} from '@material/textfield'\nimport {MDCCheckbox} from '@material/checkbox'\nimport {MDCTextFieldHelperText} from '@material/textfield/helper-text'\nimport {params_with_csrf_token} from 'utils/form_utils'\nimport * as validations from 'utils/validations'\nimport {generate_recaptcha_token} from 'utils/form_utils'\n\nexport class SetPassswordForm\n\n constructor: ->\n @prepareTextFields()\n @prepareForm()\n\n prepareTextFields: ->\n new MDCTextField(document.getElementById('user_email').parentElement.parentElement)\n @passwordField = @prepareTextField 'user_password'\n @setSubmitButtonDisabledState()\n\n prepareTextField: (id) ->\n el = document.getElementById(id)\n el.addEventListener 'keyup', (e) => @textBoxKeyPress(e)\n el.addEventListener 'change', (e) => @setSubmitButtonDisabledState()\n el.addEventListener 'paste', (e) => @setSubmitButtonDisabledState()\n try\n new MDCTextField(el.parentElement.parentElement)\n catch e\n\n textBoxKeyPress: (e) ->\n if e.keyCode == 13\n @checkSubmitForm(e)\n else\n @setSubmitButtonDisabledState()\n\n setSubmitButtonDisabledState: ->\n document.querySelector('form#set-password button[type=submit]').disabled = !validations.isValidPassword(@passwordField.value)\n\n prepareForm: ->\n document.getElementById('set-password').addEventListener 'submit', (e) => @checkSubmitForm(e)\n\n checkSubmitForm: (e) ->\n e.preventDefault()\n @removeAllErrors()\n if !@isAgreeToTermsChecked()\n @showError '.agree-to-terms', 'To use this service you must agree to the privacy policy and service terms and conditions'\n else\n @submitForm()\n false\n\n submitForm: ->\n document.querySelector('form#set-password button[type=submit]').disabled = true\n generate_recaptcha_token =>\n headers = {'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest'}\n fetch('/users/set_password', method: 'POST', body: @formParams(), headers: headers).then (response) => @formSubmitComplete(response)\n\n isAgreeToTermsChecked: -> document.getElementById('user_agree_to_terms').checked\n\n removeAllErrors: ->\n el.remove() for el in document.querySelectorAll('form#set-password .checkbox-error')\n error = document.querySelector('#set-password-container .error-message')\n error.remove() if error\n\n showError: (div, msg) ->\n @removeAllErrors()\n outer = document.createElement('div')\n outer.classList.add('mdc-text-field-helper-line', 'checkbox-error')\n inner = document.createElement('div')\n inner.classList.add('mdc-text-field-helper-text', 'mdc-text-field-helper-text--validation-msg')\n inner.innerText = msg\n outer.append inner\n box = document.querySelector(\"#{div} label\")\n box.append outer\n\n formParams: ->\n params = params_with_csrf_token()\n params.append('user[password]', @passwordField.value)\n @appendValueToParams(params, 'user_perishable_token')\n @appendValueToParams(params, 'recaptcha_token')\n params.append('user[agree_to_terms]', document.querySelector('.agree-to-terms label').innerText)\n params\n\n appendValueToParams: (params, input) ->\n token = document.getElementById(input)\n params.append(token.name, token.value) \n\n formSubmitComplete: (response) ->\n response.json().then (json) => \n if json.success\n document.querySelector('#password-set-container').classList.add 'visible'\n document.querySelector('#set-password-container').classList.remove 'visible'\n else\n form = document.querySelector('#set-password-container')\n div = document.createElement('div')\n div.append json.error\n div.classList.add 'error-message'\n form.append div\n \n\nnew SetPassswordForm()\n","import {MDCSelect} from '@material/select'\nimport {EmojiFallback} from 'utils/emoji_fallback'\nimport {OptimizerRow} from 'tools/optimizer_row'\nimport {InfiniteScroll} from 'utils/infinite_scroll'\nimport {Tooltips} from 'utils/tooltips'\nimport {CookieManager} from 'utils/cookie_manager'\n\nexport default class Optimizer\n\n constructor: ->\n @emoji = new EmojiFallback()\n @table = document.getElementById('dividends')\n @prepareSelectOptions()\n new Tooltips()\n @scroll = new InfiniteScroll(@queryUrl(), this, true)\n\n prepareSelectOptions: ->\n if !CookieManager.get(\"optimizer_filtered\")\n CookieManager.set(\"optimizer_country_value\", 1)\n CookieManager.set(\"optimizer_country_index\", 1)\n CookieManager.set(\"optimizer_cover_value\", 2)\n CookieManager.set(\"optimizer_cover_index\", 3)\n CookieManager.set(\"optimizer_filtered\", true)\n\n @durationSelect = @prepareSelect('duration')\n @sectorSelect = @prepareSelect('sector')\n @countrySelect = @prepareSelect('country')\n @marketCapSelect = @prepareSelect('market_cap')\n @coverSelect = @prepareSelect('cover')\n @cadiSelect = @prepareSelect('cadi')\n @fdiSelect = @prepareSelect('fdi')\n @indexSelect = @prepareSelect('index')\n\n prepareSelect: (name) ->\n select = new MDCSelect(document.querySelector(\"##{name}-select\"))\n index = CookieManager.get(\"optimizer_#{name}_index\")\n select.selectedIndex = parseInt(index) if index\n\n select.listen 'MDCSelect:change', =>\n CookieManager.set(\"optimizer_#{name}_index\", select.selectedIndex)\n if select.selectedIndex > 0\n CookieManager.set(\"optimizer_#{name}_value\", select.value)\n else\n CookieManager.remove(\"optimizer_#{name}_value\")\n @runOptimizerQuery()\n select\n\n runOptimizerQuery: ->\n @scroll.update @queryUrl()\n\n dataReceived: (data) ->\n @addRow(row) for row in data\n @addEmptyRow() if data.length == 0\n\n addRow: (security) ->\n @table.append @securityRow(security)\n\n securityRow: (security) ->\n row = new OptimizerRow(security, @emoji)\n row.render()\n\n addEmptyRow: ->\n div = document.createElement('DIV')\n div.classList.add 'no-matches'\n div.innerText = 'Sorry, no companies match your filter criteria'\n @table.append div\n\n queryUrl: ->\n url = \"/tools/optimizer?duration=#{@durationSelect.value}\"\n url = \"#{url}&country=#{@countrySelect.value}\" if @countrySelect.selectedIndex > 0\n url = \"#{url}&index=#{@indexSelect.value}\" if @indexSelect.selectedIndex > 0\n url = \"#{url}§or=#{@sectorSelect.value}\" if @sectorSelect.selectedIndex > 0\n url = \"#{url}&market_cap=#{@marketCapSelect.value}\" if @marketCapSelect.selectedIndex > 0\n url = \"#{url}&cover=#{@coverSelect.value}\" if @coverSelect.selectedIndex > 0\n url = \"#{url}&cadi=#{@cadiSelect.value}\" if @cadiSelect.selectedIndex > 0\n url = \"#{url}&fdi=#{@fdiSelect.value}\" if @fdiSelect.selectedIndex > 0\n url\n\nnew Optimizer()","import {element_with_content, element_with_class} from 'utils/material_elements'\n\nexport class OptimizerRow\n\n constructor: (security, emoji) ->\n @security = security\n @emoji = emoji\n\n render: ->\n @card = element_with_class('div', 'share', 'mdc-card')\n @card.append @companyImage()\n @card.append @mainBox()\n @card.addEventListener 'click', (e) => \n @card.classList.toggle('expanded') unless e.target.nodeName == 'A'\n @card\n\n companyImage: ->\n url = if @security.img then @security.img else 'https://cdn.dividendmax.com/companies/optimizer-default-building.png'\n img = document.createElement('IMG')\n img.setAttribute('alt', @security.name)\n img.setAttribute('src', url)\n element_with_content 'div', img, 'img'\n\n mainBox: ->\n div = document.createElement('DIV')\n div.classList.add 'main-box'\n div.append @companyName()\n div.append @companyDetails()\n div\n\n companyName: ->\n div = element_with_class('DIV', 'title-with-icon')\n div.append element_with_content('h2', @security.share, 'mdc-typography--headline5')\n div.append @expandIcon()\n div\n\n expandIcon: -> element_with_content('div', \"\", 'material-icons', 'mdc-icon-button__icon', 'expand-icon')\n\n parentWithClass: (div, clazz) ->\n return div if div == null or div.classList.contains(clazz)\n @parentWithClass(div.parentElement, clazz)\n\n companyDetails: ->\n div = document.createElement('DIV')\n div.classList.add 'details'\n div.append @leftColumn()\n div.append @rightColumn()\n div\n\n leftColumn: ->\n div = document.createElement('DIV')\n div.classList.add 'col', 'main-col'\n div.append @tickerAndFlag()\n div.append @divsWithLabelAndValue('Sector', @security.sector)\n div.append @divsWithLabelAndValue('Market Cap', @security.market_cap)\n div.append @detailTable()\n div\n\n tickerAndFlag: ->\n div = document.createElement('DIV')\n div.classList.add 'flag-and-ticker'\n flag = document.createElement('SPAN')\n flag.innerText = @security.flag\n @emoji.replaceInElement(flag)\n div.append flag \n unless @security.demo\n link = element_with_content('a', @security.code, 'ticker')\n link.setAttribute('href', @security.link)\n div.append link\n div\n\n divsWithLabelAndValue: (label, value) ->\n div = document.createElement('DIV')\n div.classList.add 'label-val'\n div.append @divWithText(\"#{label}:\")\n div.append @divWithText(value)\n div\n\n divWithText: (text) ->\n div = document.createElement('DIV')\n div.innerText = text\n div\n\n rightColumn: ->\n div = document.createElement('DIV')\n div.classList.add 'col' \n div.append @datesAndYields()\n div.append @dividendsTable()\n div\n\n datesAndYields: ->\n div = document.createElement('DIV')\n div.classList.add 'dates-and-yield'\n div.append @datesTable()\n div.append @yieldTable()\n div\n\n yieldTable: ->\n div = document.createElement('DIV')\n div.classList.add 'table'\n div.append @tableValue('Total Yield', @security.tot_yield)\n div.append @tableValue('Annualized', @security.ann_yield, 'highlight')\n div\n\n datesTable: ->\n div = document.createElement('DIV')\n div.classList.add 'table'\n div.append @tableValue('Buy before', @security.divs[0].ex_date)\n div.append @tableValue('Hold until', @security.divs[@security.divs.length - 1].ex_date)\n div\n\n detailTable: -> \n div = document.createElement('DIV')\n div.classList.add 'table'\n div.append @tableValue('Price', @security.price)\n div.append @tableValue('Dividends', \"#{@security.total}#{@security.currency} (#{@security.divs.length})\")\n div.append @tableValue('CADI', @security.cadi)\n div.append @tableValue('FDI', \"#{@security.fdi}%\")\n div.append @tableValue('Cover', @security.cover)\n div\n\n dividendsTable: ->\n title = element_with_content('div', 'Dividends', 'mdc-typography--overline', 'mdc-theme--secondary')\n div = element_with_content('div', title, 'dividends')\n table = document.createElement('TABLE')\n table.append @tHeadRow(['Ex-date', 'Pay date', 'Amount'])\n body = document.createElement('TBODY')\n body.append(@dividendRow(row)) for row in @security.divs\n table.append body\n div.append table\n div\n\n tHeadRow: (labels) ->\n thead = document.createElement('THEAD')\n tr = document.createElement('TR')\n tr.append(@th(label)) for label in labels\n thead.append(tr)\n thead\n\n th: (label) ->\n th = document.createElement('TH')\n th.innerText = label\n th\n\n dividendRow: (row) ->\n tr = document.createElement('TR')\n tr.append @td(row.ex_date)\n tr.append @td(row.pay_date)\n tr.append @dividendAmount(row)\n tr\n\n td: (content) ->\n td = document.createElement('TD')\n td.innerText = content\n td\n\n dividendAmount: (row) ->\n content = if row.amount == row.damount then \"#{row.amount}#{@security.currency}\" else \"#{row.amount}#{@security.currency}(#{row.damount}#{row.dcur})\"\n td = document.createElement('TD')\n td.innerHTML = content\n td\n\n tableValue: (label, value, extraClass) ->\n div = document.createElement('DIV')\n labelEl = document.createElement('LABEL')\n labelEl.innerText = label\n valueEl = document.createElement('SPAN')\n valueEl.innerText = value\n div.append labelEl\n div.append valueEl\n div.classList.add(extraClass) if extraClass\n div","/**\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 cssPropertyNameMap = {\n animation: {\n prefixed: '-webkit-animation',\n standard: 'animation'\n },\n transform: {\n prefixed: '-webkit-transform',\n standard: 'transform'\n },\n transition: {\n prefixed: '-webkit-transition',\n standard: 'transition'\n }\n};\nvar jsEventTypeMap = {\n animationend: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationEnd',\n standard: 'animationend'\n },\n animationiteration: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationIteration',\n standard: 'animationiteration'\n },\n animationstart: {\n cssProperty: 'animation',\n prefixed: 'webkitAnimationStart',\n standard: 'animationstart'\n },\n transitionend: {\n cssProperty: 'transition',\n prefixed: 'webkitTransitionEnd',\n standard: 'transitionend'\n }\n};\n\nfunction isWindow(windowObj) {\n return Boolean(windowObj.document) && typeof windowObj.document.createElement === 'function';\n}\n\nexport function getCorrectPropertyName(windowObj, cssProperty) {\n if (isWindow(windowObj) && cssProperty in cssPropertyNameMap) {\n var el = windowObj.document.createElement('div');\n var _a = cssPropertyNameMap[cssProperty],\n standard = _a.standard,\n prefixed = _a.prefixed;\n var isStandard = (standard in el.style);\n return isStandard ? standard : prefixed;\n }\n\n return cssProperty;\n}\nexport function getCorrectEventName(windowObj, eventType) {\n if (isWindow(windowObj) && eventType in jsEventTypeMap) {\n var el = windowObj.document.createElement('div');\n var _a = jsEventTypeMap[eventType],\n standard = _a.standard,\n prefixed = _a.prefixed,\n cssProperty = _a.cssProperty;\n var isStandard = (cssProperty in el.style);\n return isStandard ? standard : prefixed;\n }\n\n return eventType;\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 */\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';\n\nvar MDCCheckboxFoundation =\n/** @class */\nfunction (_super) {\n __extends(MDCCheckboxFoundation, _super);\n\n function MDCCheckboxFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCCheckboxFoundation.defaultAdapter), adapter)) || this;\n\n _this.currentCheckState_ = strings.TRANSITION_STATE_INIT;\n _this.currentAnimationClass_ = '';\n _this.animEndLatchTimer_ = 0;\n _this.enableAnimationEndHandler_ = false;\n return _this;\n }\n\n Object.defineProperty(MDCCheckboxFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckboxFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: true,\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: true,\n configurable: true\n });\n\n MDCCheckboxFoundation.prototype.init = function () {\n this.currentCheckState_ = this.determineCheckState_();\n this.updateAriaChecked_();\n this.adapter.addClass(cssClasses.UPGRADED);\n };\n\n MDCCheckboxFoundation.prototype.destroy = function () {\n clearTimeout(this.animEndLatchTimer_);\n };\n\n MDCCheckboxFoundation.prototype.setDisabled = function (disabled) {\n this.adapter.setNativeControlDisabled(disabled);\n\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\n\n MDCCheckboxFoundation.prototype.handleAnimationEnd = function () {\n var _this = this;\n\n if (!this.enableAnimationEndHandler_) {\n return;\n }\n\n clearTimeout(this.animEndLatchTimer_);\n this.animEndLatchTimer_ = setTimeout(function () {\n _this.adapter.removeClass(_this.currentAnimationClass_);\n\n _this.enableAnimationEndHandler_ = false;\n }, numbers.ANIM_END_LATCH_MS);\n };\n /**\n * Handles the change event for the checkbox\n */\n\n\n MDCCheckboxFoundation.prototype.handleChange = function () {\n this.transitionCheckState_();\n };\n\n MDCCheckboxFoundation.prototype.transitionCheckState_ = function () {\n if (!this.adapter.hasNativeControl()) {\n return;\n }\n\n var oldState = this.currentCheckState_;\n var newState = this.determineCheckState_();\n\n if (oldState === newState) {\n return;\n }\n\n this.updateAriaChecked_();\n var TRANSITION_STATE_UNCHECKED = strings.TRANSITION_STATE_UNCHECKED;\n var SELECTED = cssClasses.SELECTED;\n\n if (newState === TRANSITION_STATE_UNCHECKED) {\n this.adapter.removeClass(SELECTED);\n } else {\n this.adapter.addClass(SELECTED);\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\n\n if (this.currentAnimationClass_.length > 0) {\n clearTimeout(this.animEndLatchTimer_);\n this.adapter.forceLayout();\n this.adapter.removeClass(this.currentAnimationClass_);\n }\n\n this.currentAnimationClass_ = this.getTransitionAnimationClass_(oldState, newState);\n this.currentCheckState_ = newState; // Check for parentNode so that animations are only run when the element is attached\n // to the DOM.\n\n if (this.adapter.isAttachedToDOM() && this.currentAnimationClass_.length > 0) {\n this.adapter.addClass(this.currentAnimationClass_);\n this.enableAnimationEndHandler_ = true;\n }\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\n if (this.adapter.isIndeterminate()) {\n return TRANSITION_STATE_INDETERMINATE;\n }\n\n return this.adapter.isChecked() ? TRANSITION_STATE_CHECKED : TRANSITION_STATE_UNCHECKED;\n };\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\n switch (oldState) {\n case TRANSITION_STATE_INIT:\n if (newState === TRANSITION_STATE_UNCHECKED) {\n return '';\n }\n\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n\n case TRANSITION_STATE_UNCHECKED:\n return newState === TRANSITION_STATE_CHECKED ? ANIM_UNCHECKED_CHECKED : ANIM_UNCHECKED_INDETERMINATE;\n\n case TRANSITION_STATE_CHECKED:\n return newState === TRANSITION_STATE_UNCHECKED ? ANIM_CHECKED_UNCHECKED : ANIM_CHECKED_INDETERMINATE;\n\n default:\n // TRANSITION_STATE_INDETERMINATE\n return newState === TRANSITION_STATE_CHECKED ? ANIM_INDETERMINATE_CHECKED : ANIM_INDETERMINATE_UNCHECKED;\n }\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\n return MDCCheckboxFoundation;\n}(MDCFoundation);\n\nexport { MDCCheckboxFoundation }; // tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\n\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 } 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'];\n\nvar MDCCheckbox =\n/** @class */\nfunction (_super) {\n __extends(MDCCheckbox, _super);\n\n function MDCCheckbox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.ripple_ = _this.createRipple_();\n return _this;\n }\n\n MDCCheckbox.attachTo = function (root) {\n return new MDCCheckbox(root);\n };\n\n Object.defineProperty(MDCCheckbox.prototype, \"ripple\", {\n get: function () {\n return this.ripple_;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"checked\", {\n get: function () {\n return this.nativeControl_.checked;\n },\n set: function (checked) {\n this.nativeControl_.checked = checked;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"indeterminate\", {\n get: function () {\n return this.nativeControl_.indeterminate;\n },\n set: function (indeterminate) {\n this.nativeControl_.indeterminate = indeterminate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"disabled\", {\n get: function () {\n return this.nativeControl_.disabled;\n },\n set: function (disabled) {\n this.foundation.setDisabled(disabled);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MDCCheckbox.prototype, \"value\", {\n get: function () {\n return this.nativeControl_.value;\n },\n set: function (value) {\n this.nativeControl_.value = value;\n },\n enumerable: true,\n configurable: true\n });\n\n MDCCheckbox.prototype.initialize = function () {\n var DATA_INDETERMINATE_ATTR = strings.DATA_INDETERMINATE_ATTR;\n this.nativeControl_.indeterminate = this.nativeControl_.getAttribute(DATA_INDETERMINATE_ATTR) === 'true';\n this.nativeControl_.removeAttribute(DATA_INDETERMINATE_ATTR);\n };\n\n MDCCheckbox.prototype.initialSyncWithDOM = function () {\n var _this = this;\n\n this.handleChange_ = function () {\n return _this.foundation.handleChange();\n };\n\n this.handleAnimationEnd_ = function () {\n return _this.foundation.handleAnimationEnd();\n };\n\n this.nativeControl_.addEventListener('change', this.handleChange_);\n this.listen(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.installPropertyChangeHooks_();\n };\n\n MDCCheckbox.prototype.destroy = function () {\n this.ripple_.destroy();\n this.nativeControl_.removeEventListener('change', this.handleChange_);\n this.unlisten(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);\n this.uninstallPropertyChangeHooks_();\n\n _super.prototype.destroy.call(this);\n };\n\n MDCCheckbox.prototype.getDefaultFoundation = function () {\n var _this = this; // 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\n\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.nativeControl_;\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.nativeControl_.removeAttribute(attr);\n },\n setNativeControlAttr: function (attr, value) {\n _this.nativeControl_.setAttribute(attr, value);\n },\n setNativeControlDisabled: function (disabled) {\n _this.nativeControl_.disabled = disabled;\n }\n };\n return new MDCCheckboxFoundation(adapter);\n };\n\n MDCCheckbox.prototype.createRipple_ = function () {\n var _this = this; // 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\n\n var adapter = __assign(__assign({}, MDCRipple.createAdapter(this)), {\n deregisterInteractionHandler: function (evtType, handler) {\n return _this.nativeControl_.removeEventListener(evtType, handler, applyPassive());\n },\n isSurfaceActive: function () {\n return matches(_this.nativeControl_, ':active');\n },\n isUnbounded: function () {\n return true;\n },\n registerInteractionHandler: function (evtType, handler) {\n return _this.nativeControl_.addEventListener(evtType, handler, applyPassive());\n }\n });\n\n return new MDCRipple(this.root, new MDCRippleFoundation(adapter));\n };\n\n MDCCheckbox.prototype.installPropertyChangeHooks_ = function () {\n var _this = this;\n\n var nativeCb = this.nativeControl_;\n var cbProto = Object.getPrototypeOf(nativeCb);\n CB_PROTO_PROPS.forEach(function (controlState) {\n var desc = Object.getOwnPropertyDescriptor(cbProto, controlState); // 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\n if (!validDescriptor(desc)) {\n return;\n } // Type cast is needed for compatibility with Closure Compiler.\n\n\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\n _this.foundation.handleChange();\n }\n };\n Object.defineProperty(nativeCb, controlState, nativeCbDesc);\n });\n };\n\n MDCCheckbox.prototype.uninstallPropertyChangeHooks_ = function () {\n var nativeCb = this.nativeControl_;\n var cbProto = Object.getPrototypeOf(nativeCb);\n CB_PROTO_PROPS.forEach(function (controlState) {\n var desc = Object.getOwnPropertyDescriptor(cbProto, controlState);\n\n if (!validDescriptor(desc)) {\n return;\n }\n\n Object.defineProperty(nativeCb, controlState, desc);\n });\n };\n\n Object.defineProperty(MDCCheckbox.prototype, \"nativeControl_\", {\n get: function () {\n var NATIVE_CONTROL_SELECTOR = strings.NATIVE_CONTROL_SELECTOR;\n var el = this.root.querySelector(NATIVE_CONTROL_SELECTOR);\n\n if (!el) {\n throw new Error(\"Checkbox component requires a \" + NATIVE_CONTROL_SELECTOR + \" element\");\n }\n\n return el;\n },\n enumerable: true,\n configurable: true\n });\n return MDCCheckbox;\n}(MDCComponent);\n\nexport { MDCCheckbox };\n\nfunction validDescriptor(inputPropDesc) {\n return !!inputPropDesc && typeof inputPropDesc.set === 'function';\n}"],"sourceRoot":""}