{"version":3,"sources":["webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreatorsPerformance.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreatorsTable.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreatorsTable.vue?3f6c","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreatorsTable.vue?59a0","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreatorsTable.vue?2778","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreatorsPerformance.vue?f424","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreatorsPerformance.vue?e18c","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreatorsPerformance.vue?3c11","webpack:///./src/lib/helpers/useRouter.ts","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CategoriesPerformance.vue?f15a","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Header.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Header.vue?3fb4","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Header.vue?56b8","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Header.vue?7605","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CategoriesPerformance.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CategoriesTable.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CategoriesTable.vue?9bfa","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CategoriesTable.vue?bb96","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CategoriesTable.vue?fddf","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/LineStatistic.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/LineStatistic.vue?cd80","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/LineStatistic.vue?f31d","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/LineStatistic.vue?8a93","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CategoriesPerformance.vue?b2bd","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CategoriesPerformance.vue?cd3a","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CategoriesPerformance.vue?317e","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CategoriesTable.vue?7dfd","webpack:///./src/views/PublicCampaignAnalytics/components/UplifyPromo.vue?f50b","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreatorsTable.vue?c3da","webpack:///./src/lib/helpers/useRoute.ts","webpack:///./src/views/Partner/pages/PartnerAnalytics/store/index.js","webpack:///./node_modules/element-ui/packages/tabs/src/tab-bar.vue","webpack:///node_modules/element-ui/packages/tabs/src/tab-bar.vue","webpack:///./node_modules/element-ui/packages/tabs/src/tab-bar.vue?4360","webpack:///./node_modules/element-ui/packages/tabs/src/tab-bar.vue?a683","webpack:///node_modules/element-ui/packages/tabs/src/tab-nav.vue","webpack:///./node_modules/element-ui/packages/tabs/src/tab-nav.vue","webpack:///./node_modules/element-ui/packages/tabs/src/tabs.vue","webpack:///./node_modules/element-ui/packages/tabs/src/tab-nav.vue?67c1","webpack:///node_modules/element-ui/packages/tabs/src/tabs.vue","webpack:///./node_modules/element-ui/packages/tabs/src/tabs.vue?5f27","webpack:///./node_modules/element-ui/packages/tabs/index.js","webpack:///./src/plugins/element-ui/ElTabs/index.js","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Tabs.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Tabs.vue?c5cc","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Tabs.vue?4a31","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Tabs.vue?1d0a","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Header.vue?d7ae","webpack:///./node_modules/element-ui/packages/tabs/src/tab-pane.vue","webpack:///node_modules/element-ui/packages/tabs/src/tab-pane.vue","webpack:///./node_modules/element-ui/packages/tabs/src/tab-pane.vue?ab11","webpack:///./node_modules/element-ui/packages/tabs/src/tab-pane.vue?3994","webpack:///./node_modules/element-ui/packages/tab-pane/index.js","webpack:///./src/plugins/element-ui/ElTabPane/index.js","webpack:///./src/views/PublicCampaignAnalytics/components/PageHeader.vue?aa44","webpack:///./src/plugins/element-ui/Loading/Loading.vue","webpack:///src/plugins/element-ui/Loading/Loading.vue","webpack:///./src/plugins/element-ui/Loading/Loading.vue?c17b","webpack:///./src/plugins/element-ui/Loading/Loading.vue?24f8","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Tabs.vue?a44e","webpack:///./src/views/PublicCampaignAnalytics/index.vue","webpack:///./src/views/PublicCampaignAnalytics/components/PageHeader.vue","webpack:///./src/views/PublicCampaignAnalytics/components/PageHeader.vue?ed8d","webpack:///./src/views/PublicCampaignAnalytics/components/PageHeader.vue?8929","webpack:///./src/views/PublicCampaignAnalytics/components/PageHeader.vue?69dc","webpack:///./src/views/PublicCampaignAnalytics/components/UplifyPromo.vue","webpack:///./src/views/PublicCampaignAnalytics/components/UplifyPromo.vue?e49c","webpack:///./src/views/PublicCampaignAnalytics/components/UplifyPromo.vue?c0b0","webpack:///./src/views/PublicCampaignAnalytics/components/UplifyPromo.vue?0b00","webpack:///./src/views/PublicCampaignAnalytics/index.vue?9e2a","webpack:///./src/views/PublicCampaignAnalytics/index.vue?2c18","webpack:///./src/views/PublicCampaignAnalytics/index.vue?5c92","webpack:///./node_modules/element-ui/src/mixins/migrating.js","webpack:///./src/views/PublicCampaignAnalytics/index.vue?e477","webpack:///./node_modules/vue-chartjs/legacy/index.js","webpack:///./node_modules/element-ui/packages/pagination/src/pager.vue","webpack:///node_modules/element-ui/packages/pagination/src/pager.vue","webpack:///./node_modules/element-ui/packages/pagination/src/pager.vue?c574","webpack:///./node_modules/element-ui/packages/pagination/src/pager.vue?9d25","webpack:///./node_modules/element-ui/packages/select/index.js","webpack:///./node_modules/element-ui/packages/pagination/src/pagination.js","webpack:///./node_modules/element-ui/packages/pagination/index.js","webpack:///./src/plugins/element-ui/ElPagination/index.js","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreatorsPerformance.vue?621b","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreativeStats.vue?1ab6","webpack:///./src/lib/helpers/parseSlug.ts","webpack:///./node_modules/vue-types/dist/vue-types.m.js","webpack:///./src/lib/types/campaign-type.ts","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Top5.vue?8ac8","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicatorsCard.vue?eb46","webpack:///./src/assets/img/user-placeholder.png","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CampaignPerformance.vue?d4b5","webpack:///./src/plugins/vue-types/nullType.js","webpack:///./src/plugins/vue-types/index.js","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CampaignPerformanceBarChart.vue?0f33","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicators.vue?2a90","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/Top5Card.vue?8602","webpack:///./node_modules/element-ui/packages/date-picker/src/picker.vue","webpack:///./node_modules/element-ui/src/utils/date-util.js","webpack:///node_modules/element-ui/packages/date-picker/src/picker.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/picker.vue?6b0a","webpack:///./node_modules/element-ui/packages/date-picker/src/picker.vue?2b33","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/date.vue","webpack:///./node_modules/element-ui/packages/button/src/button.vue","webpack:///node_modules/element-ui/packages/button/src/button.vue","webpack:///./node_modules/element-ui/packages/button/src/button.vue?c0c1","webpack:///./node_modules/element-ui/packages/button/src/button.vue?143d","webpack:///./node_modules/element-ui/packages/button/index.js","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/time.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/time-spinner.vue","webpack:///node_modules/element-ui/packages/date-picker/src/basic/time-spinner.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/time-spinner.vue?4ae0","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/time-spinner.vue?5be7","webpack:///node_modules/element-ui/packages/date-picker/src/panel/time.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/time.vue?9774","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/time.vue?fa7f","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/year-table.vue","webpack:///node_modules/element-ui/packages/date-picker/src/basic/year-table.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/year-table.vue?9bf9","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/year-table.vue?f04f","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/month-table.vue","webpack:///node_modules/element-ui/packages/date-picker/src/basic/month-table.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/month-table.vue?5251","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/month-table.vue?326b","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/date-table.vue","webpack:///node_modules/element-ui/packages/date-picker/src/basic/date-table.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/date-table.vue?ee7b","webpack:///./node_modules/element-ui/packages/date-picker/src/basic/date-table.vue?3158","webpack:///node_modules/element-ui/packages/date-picker/src/panel/date.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/date.vue?2873","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/date.vue?77fa","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/date-range.vue","webpack:///node_modules/element-ui/packages/date-picker/src/panel/date-range.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/date-range.vue?f90f","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/date-range.vue?eb01","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/month-range.vue","webpack:///node_modules/element-ui/packages/date-picker/src/panel/month-range.vue","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/month-range.vue?f1c8","webpack:///./node_modules/element-ui/packages/date-picker/src/panel/month-range.vue?4893","webpack:///./node_modules/element-ui/packages/date-picker/src/picker/date-picker.js","webpack:///./node_modules/element-ui/packages/date-picker/index.js","webpack:///./src/plugins/element-ui/ElDatePicker/index.js","webpack:///./src/assets/img/category-placeholder.png","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CampaignPerformance.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CampaignPerformanceBarChart.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CampaignPerformanceBarChart.vue?adc7","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CampaignPerformanceBarChart.vue?9315","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CampaignPerformanceBarChart.vue?d23d","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicators.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicatorsCard.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicatorsCard.vue?a577","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicatorsCard.vue?d430","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicatorsCard.vue?67ab","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicators.vue?ec92","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicators.vue?b503","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicators.vue?fa9b","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreativeStats.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreativeStatsTable.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreativeStatsTable.vue?f3c2","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreativeStatsTable.vue?1b1a","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreativeStatsTable.vue?961b","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreativeStats.vue?75ff","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreativeStats.vue?fabe","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreativeStats.vue?d2bf","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Top5.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/Top5Card.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/Top5Card.vue?5f7b","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/Top5Card.vue?1728","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/Top5Card.vue?6eca","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Top5.vue?3f10","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Top5.vue?a312","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Top5.vue?ab48","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CampaignPerformance.vue?e2b3","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CampaignPerformance.vue?b69b","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CampaignPerformance.vue?5361","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CreativeStats.vue?02bc","webpack:///./node_modules/element-ui/src/utils/after-leave.js","webpack:///./src/plugins/element-ui/Loading/index.js","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.mjs","webpack:///./node_modules/chart.js/dist/chart.mjs","webpack:///./node_modules/element-ui/src/directives/repeat-click.js","webpack:///./node_modules/lodash/isNull.js","webpack:///./node_modules/element-ui/src/utils/date.js","webpack:///./node_modules/element-ui/src/mixins/emitter.js","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/LineStatistic.vue?752b"],"names":["render","_vm","this","_c","_self","_setup","_setupProxy","directives","name","rawName","value","creators","loading","expression","staticClass","_v","_s","locale","title","ElDatePicker","attrs","pickerOptions","model","dates","callback","$$v","ElButton","on","downloadCSV","length","CreatorsTable","filters","$event","_e","noData","staticRenderFns","ElTable","staticStyle","items","prop","order","onSortChange","ElTableColumn","creator","scopedSlots","_u","key","fn","_ref","row","$index","getRealRowIndex","style","backgroundImage","image","platform","impressions","formatter","column","cellValue","index","numberToRanks","clicks","ctr","parseFloat","toFixed","ElPagination","prev","next","perPage","props","page","total","onPageChange","_defineComponent","__name","emits","setup","__props","emit","computed","baseDir","useRootLocale","vm","$store","getters","params","Object","assign","sortBy","sortDirection","newPage","__sfc","component","vLoading","route","useRoute","router","useRouter","ref","currentDateInPicker","lastDay","moment","end","diff","subtract","toDate","Date","disabledDate","date","start","formattedDates","format","watch","oldValue","replace","query","fetchCreators","dispatch","type","onMounted","dateStart","_a","dateEnd","_b","getCurrentInstance","Error","proxy","$router","DashboardTitle","showCopyLink","copyLinkState","copyLink","copyLinkSuccess","Boolean","campaignSlug","link","window","location","origin","$clipboard","setTimeout","isLoading","LineStatistic","CategoriesTable","category","categories","fetchData","formattedParams","_l","item","id","percent","color","colors","map","campaigns","categoriesImpressions","categoriesDistribution","$route","defaultState","campaignType","activeTab","campaignInfo","status","updatedAt","impressions_limit","spent","spent_limit","clicks_total","fills","reach","channels","avg_cpm","data","creatives","top_channels","top_categories","per_page","getDefaultState","JSON","parse","stringify","namespaced","state","mutations","setCampaigns","payload","setCreators","setCategoriesImpressions","setCategoriesDistribution","setCampaignInfo","setActiveTab","setCampaignSlug","setCampaignType","resetState","actions","commit","slug","res","Api","get","_ref2","filtersString","directions","descending","ascending","_ref3","_ref4","_ref5","tab","_ref6","_ref7","parseSlug","_ref8","downloadReport","_ref9","docType","open","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","class","rootTabs","tabPosition","barStyle","tabs","Array","inject","offset","tabSize","sizeName","indexOf","sizeDir","firstUpperCase","str","toLowerCase","L","toUpperCase","every","$el","arrayFind","$parent","$refs","t","paneName","active","tabStyles","getComputedStyle","paddingLeft","paddingRight","transform","msTransform","webkitTransform","noop","components","TabBar","panes","currentName","String","editable","onTabClick","Function","default","onTabRemove","stretch","scrollable","navOffset","isFocus","focusable","navStyle","dir","methods","scrollPrev","containerSize","navScroll","currentOffset","newOffset","scrollNext","navSize","nav","scrollToActiveTab","querySelector","isHorizontal","activeTabBounding","getBoundingClientRect","navScrollBounding","maxOffset","offsetWidth","width","offsetHeight","height","left","right","top","bottom","Math","max","min","update","changeTab","e","keyCode","nextIndex","currentIndex","tabList","currentTarget","querySelectorAll","prototype","call","target","focus","click","setFocus","removeFocus","visibilityChangeHandler","visibility","document","visibilityState","windowBlurHandler","windowFocusHandler","updated","h","scrollBtn","pane","tabName","closable","isClosable","btnClose","ev","tabLabelContent","$slots","label","tabindex","disabled","blur","mounted","addResizeListener","addEventListener","beforeDestroy","removeResizeListener","removeEventListener","TabNav","activeName","addable","beforeLeave","provide","setCurrentName","$nextTick","_","calcPaneInstances","isForceUpdate","arguments","undefined","paneSlots","filter","vnode","tag","componentOptions","Ctor","options","componentInstance","panesChanged","handleTabClick","event","$emit","handleTabRemove","stopPropagation","handleTabAdd","changeCurrentName","before","then","newButton","navData","header","_mergeJSXProps","panels","created","$on","bind","ElTabs","install","Vue","Tabs","ElTabPane","inactive","overview","val","lazy","loaded","_t","componentName","labelContent","TabPane","handleAfterLeave","visible","customClass","fullscreen","backgroundColor","background","loadingSpinnerClasses","spinner","text","floatLoading","setText","PageHeader","Header","CampaignPerformance","CreatorsPerformance","CategoriesPerformance","UplifyPromo","UplifyLogo","onDemoClick","requestDemo","poweredBy","runAtestCampaignToday","onGetStartedClick","getStarted","push","hasModule","registerModule","store","urlSlug","localStorage","getItem","$setElementUILocale","onBeforeUnmount","events","ChartEmits","chartCreate","createChartFunction","chartData","chartOptions","context","ChartRendered","chartUpdate","chart","ChartUpdated","chartDestroy","destroy","ChartDestroyed","getChartData","datasetIdKey","nextData","labels","datasets","setChartDatasets","oldData","newData","addedDatasets","nextDataset","currentDataset","find","dataset","includes","setChartLabels","LabelsUpdated","setChartOptions","compareData","newDatasetLabels","oldDatasetLabels","templateError","ANNOTATION_PLUGIN_KEY","generateChart","chartId","chartType","chartController","_chartRef","required","Number","cssClasses","styles","plugins","_chart","_id","random","toString","substring","ref1","pluginSettings","register","$data","renderChart","handler","newValue","chartDataHandler","deep","chartOptionsHandler","currentChart","getCurrentChart","canvas","canvasEl2DContext","getContext","setCurrentChart","keys","isEqualLabelsAndDatasetsLength","updateChart","hasAnnotationPlugin","createElement","Bar","onPagerClick","pageCount","currentPage","showPrevMore","quickprevIconClass","onMouseenter","pagers","pager","showNextMore","quicknextIconClass","pagerCount","tagName","textContent","pagerCountOffset","className","isNaN","direction","halfPagerCount","array","startPage","i","floor","current","Select","pageSize","small","validator","layout","pageSizes","popperClass","prevText","nextText","hideOnSinglePage","internalCurrentPage","internalPageSize","lastEmittedPage","userChangePageSize","internalPageCount","template","TEMPLATE_MAP","jumper","handleCurrentChange","sizes","slot","split","trim","rightWrapper","haveRightWrapper","children","forEach","compo","unshift","Prev","Next","Sizes","mixins","Locale","immediate","newVal","oldVal","valueEquals","isArray","handleChange","ElSelect","ElOption","parseInt","Jumper","ElInput","userInput","handleKeyup","handleInput","getValidCurrentPage","emitChange","Total","Pager","havePageCount","resetValue","ceil","oldPage","Pagination","Types","Kinds","Formats","kind","n","r","enumerable","configurable","writable","defineProperty","hasOwnProperty","apply","create","constructor","__proto__","o","u","a","f","c","l","s","match","v","y","p","b","isInteger","isFinite","g","O","m","j","some","T","_vueTypes_name","join","w","defineProperties","isRequired","def","concat","k","P","getOwnPropertyNames","getOwnPropertyDescriptor","__original","x","A","E","N","q","S","V","F","D","Y","TypeError","B","reduce","I","J","M","R","$","_vueTypes_isLoose","z","extend","validate","getter","slice","defaults","func","bool","string","number","object","integer","C","set","custom","oneOf","instanceOf","oneOfType","arrayOf","objectOf","shape","utils","toType","G","Campaign","module","exports","VueTypes","isNull","sensibleDefaults","ranged","handleClose","pickerSize","pickerDisabled","pickerVisible","handleRangeClick","handleMouseEnter","showClose","handleKeydown","triggerClass","startPlaceholder","readonly","domProps","displayValue","handleStartInput","handleStartChange","handleFocus","firstInputId","rangeSeparator","endPlaceholder","handleEndInput","handleEndChange","secondInputId","haveTrigger","clearIcon","handleClickIcon","placeholder","nativeOn","weeks","months","newArray","result","getI18nSettings","dayNamesShort","week","dayNames","monthNamesShort","month","monthNames","amPm","isDate","getTime","isDateObject","formatDate","parseDate","getDayCountOfMonth","year","getDate","getDayCountOfYear","isLeapYear","getFirstDayOfMonth","temp","setDate","getDay","prevDate","amount","getFullYear","getMonth","nextDate","getStartDateOfMonth","day","getWeekNumber","src","setHours","week1","round","getRangeHours","ranges","hours","disabledHours","range","getHours","setRangeData","arr","getRangeMinutes","hour","minutes","startHour","startMinute","getMinutes","endHour","endMinute","modifyDate","d","getSeconds","getMilliseconds","modifyTime","modifyWithTimeString","time","clearTime","clearMilliseconds","limitTimeRange","normalizeDate","ndate","nranges","nrange","minDate","maxDate","ret","timeWithinRange","selectableRange","limitedDate","changeYearMonthAndClampDate","monthDate","prevMonth","nextMonth","prevYear","nextYear","extractDateFormat","extractTimeFormat","NewPopper","appendToBody","Popper","boundariesPadding","arrowOffset","transformOrigin","merge","visibleArrow","DEFAULT_FORMATS","datetime","timerange","daterange","monthrange","datetimerange","years","HAVE_TRIGGER_TYPES","DATE_FORMATTER","DATE_PARSER","RANGE_FORMATTER","RANGE_PARSER","separator","range1","range2","TYPE_VALUE_RESOLVER_MAP","parser","trueDate","test","PLACEMENT_MAP","center","parseAsFormatAndType","customFormat","formatAsFormatAndType","dateEquals","aIsDate","bIsDate","aIsArray","bIsArray","isString","Emitter","elForm","elFormItem","size","valueFormat","prefixIcon","clearable","align","defaultValue","defaultTime","unlinkPanels","validateEvent","Clickoutside","valueOnOpen","unwatchPickerOptions","showPicker","hidePicker","parsedValue","picker","reference","refInput","valueIsEmpty","len","selectionMode","showTrigger","formattedValue","valueIsDateObject","_elFormItemSize","elFormItemSize","$ELEMENT","obj","popperOptions","gpuAcceleration","placement","handleFieldReset","input","parseValue","isParsed","formatToValue","isFormattable","parseString","formatToString","isValidValue","emitInput","handleClear","initialValue","activeElement","resetView","destroyPopper","$isServer","mountPicker","updatePopper","adjustSpinners","_this","panel","$mount","popperElm","showTime","arrowControl","timeArrowControl","$watch","updateOptions","option","appendChild","doDestroy","pos","setSelectionRange","unmountPicker","$destroy","$off","parentNode","removeChild","formatted","handleEnter","handleLeave","sidebar","shortcuts","shortcut","handleShortcutClick","visibleDate","userInputDate","handleVisibleDateChange","handleTimePickClose","visibleTime","timePickerVisible","userInputTime","handleVisibleTimeChange","handleTimePick","proxyTimePickerDataProperties","currentView","showYearPicker","yearLabel","showMonthPicker","firstDayOfWeek","cellClassName","handleDatePick","handleYearPick","handleMonthPick","footerVisible","changeToNow","confirm","buttonSize","buttonDisabled","plain","circle","autofocus","nativeType","handleClick","icon","$options","propsData","evt","showSeconds","useArrow","amPmMode","handleCancel","handleConfirm","emitSelectRange","adjustCurrentSpinner","hoursList","minutesList","enabled","second","seconds","decrease","increase","arrowHourList","arrowMinuteList","minute","arrowSecondList","ElScrollbar","repeatClick","RepeatClick","currentScrollbar","bindScrollEvent","scrollDown","modifyDateField","adjustSpinner","bindFunction","wrap","onscroll","handleScroll","scrollTop","scrollBarHeight","typeItemHeight","el","step","now","abs","shouldShowAmPm","isCapital","content","TimeSpinner","needInitAdjust","selectionRange","first","mapping","changeSelectionRange","preventDefault","list","handleYearTableClick","getCellStyle","startYear","datesInYear","numOfDays","firstDay","today","arrayFindIndex","coerceTruthyValueToArray","hasClass","innerText","idx","handleMonthTableClick","handleMouseMove","rows","cell","datesInMonth","clearDate","getMonthTimestamp","NaN","removeFromArray","pred","rangeState","endDate","selecting","markRange","tableRows","lastRow","lastColumn","cellMatchesDate","inRange","getMonthOfCell","rowIndex","cellIndex","newDate","selectedDate","isToday","cellDate","selected","$set","showWeekNumber","WEEKS","isWeekActive","getCellClasses","getDateTimestamp","_clearTime","offsetDay","startDate","dateCountOfMonth","dateCountOfLastMonth","count","numberOfDaysFromPreviousMonth","classes","getDateOfCell","offsetFromStart","setMonth","setFullYear","dayOffset","weekDate","weekNumber","inputElm","pickerWidth","getDefaultValue","timepicker","timeFormat","_len","args","_key","onClick","checkDateWithinRange","body","handleKeyControl","mode","dateFormat","TimePicker","YearTable","MonthTable","DateTable","yearTranslation","minVisibleDate","handleDateInput","handleDateChange","handleMinTimeClose","minVisibleTime","minTimePickerVisible","handleTimeInput","handleTimeChange","handleMinTimePick","minTimePicker","maxVisibleDate","handleMaxTimeClose","maxVisibleTime","maxTimePickerVisible","handleMaxTimePick","maxTimePicker","leftPrevYear","leftPrevMonth","enableYearArrow","leftNextYear","enableMonthArrow","leftNextMonth","leftLabel","leftDate","handleChangeRange","handleRangePick","rightPrevYear","rightPrevMonth","rightNextYear","rightNextMonth","rightLabel","rightDate","btnDisabled","calcDefaultValue","leftYear","leftMonth","leftMonthDate","rightYear","rightMonth","rightMonthDate","dateUserInput","timeUserInput","yearOffset","minDateYear","minDateMonth","maxDateYear","maxDateMonth","close","onPick","getPanel","DateRangePanel","MonthRangePanel","DatePanel","Picker","DatePicker","downloadExcel","CommonIndicators","CampaignPerformanceBarChart","CreativeStats","Top5","ChartJS","Title","Tooltip","Legend","BarElement","CategoryScale","LinearScale","LineElement","LineController","PointElement","responsive","maintainAspectRatio","scales","grid","display","stacked","ticks","autoSkip","maxRotation","minRotation","position","legend","padding","pointStyle","usePointStyle","savedMonth","rawData","_getFormatttedDate","borderColor","tension","yAxisID","categoryPercentage","barPercentage","showMonth","mDate","CommonIndicatorsCard","outOf","formattedSpentValue","formattedSpentLimit","viewability","avgCPM","totalClicks","BRAND_AWARENESS","simple","formattedTotal","currencyCode","advertiser","wallet","currency","code","floatToCurrency","selectedCategory","allCategories","CreativeStatsTable","filteredData","groupName","creativeName","adFormat","_row","_column","_index","group_name","currencyIcon","top5Channels","streamer","Top5Card","goToCreators","creatorsLinkCaption","top5Categories","goToCategories","categoriesLinkCaption","isCategory","placeholderImg","bgImg","user","require","instance","called","afterLeaveCallback","once","$once","speed","Mask","Loading","toggleLoading","binding","nextTick","modifiers","originalPosition","getStyle","originalOverflow","maskStyle","zIndex","PopupManager","nextZIndex","addClass","mask","insertDom","removeClass","property","scroll","documentElement","afterLeave","domVisible","hiding","parent","lock","domInserted","textExr","getAttribute","spinnerExr","backgroundExr","customClassExr","hasAttribute","unbind","uid","isNullOrUndef","isObject","isNumberFinite","finiteOrDefault","valueOrDefault","toPercentage","dimension","endsWith","toDimension","thisArg","each","loopable","reverse","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","source","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","resolveObjectKey","resolver","_getKeyResolver","_splitKey","parts","tmp","part","_capitalize","charAt","defined","isFunction","setsEqual","has","_isClickEvent","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","roundedRange","almostEquals","niceRange","pow","fraction","niceFraction","_factorize","sqrt","sort","pop","isNumber","epsilon","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","method","base","unlistenArrayEvents","stub","splice","_arrayUnique","Set","add","from","requestAnimFrame","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","rest","debounce","delay","timeout","clearTimeout","_toLeftRightCenter","_alignStartEnd","_textX","rtl","check","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","_sorted","iScale","_parsed","axis","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInBounce","easeOutBounce","easeInOutBounce","lim","p2b","n2b","b2n","n2p","map$1","0","1","2","3","4","5","6","7","8","9","hex","h1","h2","eq","isShort","hexParse","hexString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","exec","p1","p2","rotate","deg","hslString","Z","X","W","U","Q","K","H","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","ok","nk","nameParse","transparent","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","ratio","clone","proto","fromObject","functionParse","Color","_rgb","_valid","weight","c1","c2","w2","w1","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","overrides","getScope$1","node","root","scope","Defaults","_descriptors","animation","devicePixelRatio","getDevicePixelRatio","elements","font","family","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","includeInvisible","onHover","parsing","scale","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","_scriptable","startsWith","_indexable","_fallback","toFontString","_measureText","gc","longest","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","opts","lines","strokeWidth","strokeColor","line","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","resolve","inputs","info","cacheable","_addGrace","minmax","grace","beginAtZero","change","keepZero","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","override","Proxy","_keys","_cached","_resolveWithPrefixes","Reflect","getPrototypeOf","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","ownKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","prefix","needsSubResolver","descriptors","_resolveScriptable","_resolveArray","delete","createSubResolver","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_parsing","parsed","EPSILON","getPoint","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","monotoneCompute","valueAxis","delta","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","_isDomSupported","_getParentNode","domNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","element","getPropertyValue","positions","getPositionedStyle","suffix","useOffsetPos","shadowRoot","getCanvasPosition","touches","offsetX","offsetY","box","clientX","clientY","getRelativePosition","borderBox","boxSizing","paddings","borders","getContainerSize","maxHeight","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","Map","getNumberFormat","cacheKey","Intl","NumberFormat","formatNumber","num","getRightToLeftAdapter","rectX","itemWidth","getLeftToRightAdapter","_itemWidth","getRtlAdapter","overrideTextDirection","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","getSegment","segment","bounds","startBound","endBound","_boundSegment","prevValue","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","cur","stop","_computeSegments","segmentOptions","_loop","splitByStyles","completeLoop","_fullLoop","doSplitByStyles","chartContext","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","p0","p0DataIndex","p1DataIndex","styleChanged","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","_request","_charts","_running","_lastDate","anims","callbacks","numSteps","duration","initial","currentStep","_update","_refresh","remaining","running","draw","_active","_total","tick","_notify","charts","complete","progress","cb","_getAnims","acc","_duration","cancel","animator","interpolators","to","factor","c0","valid","mix","cfg","currentValue","_fn","_easing","easing","_start","_target","_prop","_from","_to","_promises","elapsed","remain","promises","Promise","rej","resolved","numbers","properties","resize","show","animations","hide","config","_properties","configure","animatedProps","newOptions","resolveTargetOptions","_createAnimations","$shared","awaitAll","$animations","_animateOptions","anim","wait","all","scaleClip","allowedOverflow","defaultClip","toClip","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","convertObjectDataToArray","adata","isStacked","getStackKey","indexScale","valueScale","NEGATIVE_INFINITY","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","vAxis","itemStacks","_top","_bottom","getFirstScaleId","shift","createDatasetContext","createDataContext","dataIndex","raw","clearStacks","isDirectUpdateMode","cloneIfNotShared","cached","shared","createStack","canStack","hidden","_stacked","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","addElements","getDataset","chooseId","xid","xAxisID","yid","rid","rAxisID","iid","iAxisID","vid","vAxisID","getScaleForId","rScale","getDatasetMeta","scaleID","isExtensible","_dataCheck","datasetElementType","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","otherScale","_getOtherScale","otherMin","otherMax","_skip","updateRangeFromParsed","getParsed","getLabelForValue","_clip","getMaxOverflow","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","names","resolveNamedOptions","freeze","transition","datasetAnimationScopeKeys","sharedOptions","_animationsDisabled","firstOpts","previouslySharedOptions","getSharedOptions","includeOptions","updateSharedOptions","_resolveAnimations","_setStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_dataChanges","_sync","newCount","getAllScaleValues","_cache","$bar","visibleMetas","getAllParsedValues","computeMinSampleSize","curr","_length","updateMinAndPrev","getPixelForTick","computeFitCategoryTraits","ruler","stackCount","thickness","barThickness","chunk","pixels","computeFlexCategoryTraits","parseFloatBar","entry","startValue","endValue","barStart","barEnd","_custom","parseArrayOrPrimitive","isFloatBar","barSign","actualBase","borderProps","horizontal","setBorderSkipped","edge","borderSkipped","enableBorderRadius","parseEdge","swap","startEnd","orig","v2","setInflateAmount","inflateAmount","iAxisKey","vAxisKey","super","bars","reset","getBasePixel","_getRuler","_getSharedOptions","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","updateElement","grouped","skipNull","_getStacks","_startPixel","_endPixel","_getStackCount","baseValue","minBarLength","floating","getDataVisibility","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","stackIndex","_getStackIndex","rects","_index_","_value_","getRatioAndOffset","circumference","cutout","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","tooltip","innerRadius","outerRadius","isDatasetVisible","_getRotation","_getCircumference","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","chartWeight","_getRingWeight","_getRotationExtents","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","_circumference","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legendItem","toggleDataVisibility","tooltipItem","dataLabel","_dataset","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","pointPosition","getPointPositionForValue","useFinalPosition","getProps","final","defaultRoutes","formatters","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","numeric","Ticks","tickOpts","ticksLimit","maxTicksLimit","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","newTicks","skipMajors","calculateSpacing","avgMajorSpacing","tickLength","_tickSize","maxScale","maxChart","_maxLength","evenMajorSpacing","getEvenSpacing","factors","majorStart","majorEnd","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","reverseAlign","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","caches","getTickMarkLength","getTitleHeight","createScaleContext","createTickContext","titleAlign","titleArgs","titleX","titleY","positionAxisID","_margins","paddingTop","paddingBottom","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_reversePixels","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getMinMax","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","notifyPlugins","_callHooks","beforeTickToLabelConversion","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","fullSize","generateTickLabels","_computeLabelSizes","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","decimal","getBaseValue","optionTicks","rot","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","fillRect","findIndex","_computeGridLineItems","drawLine","setLineDash","lineDashOffset","lastLineWidth","_computeLabelArea","_computeLabelItems","drawBackground","drawGrid","drawTitle","drawLabels","tz","gz","getSortedVisibleDatasetMetas","axisID","fontSize","isPrototypeOf","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","controllers","_typedRegistries","_each","_get","typedRegistry","arg","reg","_getRegistryForType","isForType","_exec","itemReg","registry","camelMethod","getElement","DateAdapter","timestamp","unit","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","getDistanceMetricForAxis","useX","useY","deltaX","deltaY","getIntersectItems","isPointInArea","evaluationFunc","getNearestRadialItems","getNearestCartesianItems","distanceMetric","minDistance","getCenterPoint","pointInArea","getNearestItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","wrapBoxes","boxes","layoutBoxes","stackWeight","buildStacks","layouts","placed","setLayoutDims","vBoxMaxWidth","hBoxMaxHeight","availableWidth","availableHeight","buildLayoutBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","_layers","layoutItem","minPadding","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","BasePlatform","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","initCanvas","renderHeight","renderWidth","displayWidth","displayHeight","eventListenerOptions","passive","addListener","removeListener","fromNativeEvent","native","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","ResizeObserver","contentRect","releaseObserver","disconnect","createProxyAndListen","removeAttribute","setAttribute","proxies","$proxies","handlers","attach","detach","isConnected","_detectPlatform","OffscreenCanvas","_init","hook","_createDescriptors","descriptor","plugin","cancelable","_oldCache","_notifyStateChanges","allPlugins","createDescriptors","previousDescriptors","localIds","getPlugin","getOpts","pluginOpts","pluginScopeKeys","getIndexAxis","datasetDefaults","datasetOptions","getAxisFromDefaultScaleID","getDefaultScaleIDFromAxis","axisFromPosition","determineAxis","scaleOptions","mergeScaleConfig","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","error","defaultId","defaultScaleOptions","defaultID","initOptions","initData","initConfig","keyCache","keysCached","cachedKeys","generate","addIfFound","_config","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","mainScope","resetCache","keyLists","_cachedScopes","subPrefixes","getResolver","needContext","subResolver","resolverCache","hasFunction","version","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","animationOptions","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","determineLastEvent","lastEvent","inChartArea","isClick","userConfig","initialCanvas","existingChart","chartOptionScopes","updateConfig","acquireContext","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","listen","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","scalesOptions","axisOptions","scaleOpts","isRadial","dposition","dtype","scaleType","scaleClass","getScale","init","hasUpdated","addBox","_destroyDatasetMeta","newControllers","_removeUnreferencedMetasets","updateIndex","ControllerClass","getController","_updateMetasets","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","invalidate","buildOrUpdateControllers","buildOrUpdateElements","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","removeBox","ensureScalesHaveIDs","buildOrUpdateScales","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","setDatasetVisibility","_updateVisibility","_destroy","remove","_stop","releaseContext","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","isAttached","activeElements","lastActive","notify","replay","hoverOptions","deactivated","activated","updateHoverStyle","eventFilter","_handleEvent","_getActiveElements","getElementsAtEventForMode","invalidatePlugins","clipArc","pixelMargin","angleMargin","toRadiusCorners","parseBorderRadius$1","angleDelta","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","alpha","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","drawFullCircleBorders","inner","lineJoin","unregister","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","setStyle","lineCap","getLineMethod","stepped","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","useFastPath","_getInterpolationMethod","strokePathWithCache","path","_path","Path2D","strokePathDirect","segmentMethod","usePath2D","_points","_segments","_pointsUpdated","_interpolate","interpolated","inRange$1","hitRadius","mouseX","mouseY","hoverRadius","getBarBounds","bar","half","skipOrLimit","parseBorderWidth","maxW","maxH","parseBorderRadius","maxR","enableBorder","boundingRects","outer","skipX","skipY","skipBoth","hasRadius","addNormalRectPath","inflateRect","refRect","addRectPath","getBoxSize","labelOpts","boxHeight","boxWidth","pointStyleWidth","itemHeight","itemsEqual","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","generateLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtlHelper","hitbox","leftForLtr","_draw","defaultColor","fontColor","halfFontSize","cursor","drawLegendBox","lineDash","drawOptions","SQRT2","xPlus","yBoxTop","xBoxLeft","textDirection","setWidth","realX","titleFont","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","isListened","hoveredItem","_getLegendItemAt","sameItem","onLeave","plugin_legend","_element","_args","adjustHitBoxes","handleEvent","ci","_padding","textSize","fontOpts","_drawArgs","createTitle","titleBlock","plugin_title","WeakMap","positioners","hasValue","tooltipPosition","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getLabelAndValue","getTooltipSize","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","bodyLineHeight","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","caretSize","caretPadding","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","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","titleColor","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","bodyAlign","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","_drawColorBox","footerAlign","footerColor","tooltipSize","drawCaret","quadraticCurveTo","animX","animY","_updateAnimationTarget","hasTooltipContent","globalAlpha","drawBody","drawFooter","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","_willRender","labelCount","addIfString","addedLabels","findOrAddLabel","lastIndexOf","_startValue","_valueRange","_addedLabels","added","getDecimalForPixel","generateTicks$1","generationOptions","dataRange","MIN_SPACING","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","decimalPlaces","relativeLabelSize","_endValue","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","stepSize","computeTickLimit","getTickLimit","numericGeneratorOptions","_maxDigits","handleTickRangeOptions","isMajor","tickVal","generateTicks","endExp","endSignificand","exp","significand","lastTick","_zero","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","limits","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","hLimits","vLimits","updateLimits","setCenterPoint","_pointLabelItems","buildPointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","drawPointLabels","backdropLeft","backdropTop","backdropWidth","backdropHeight","pathRadiusLine","drawRadiusLine","gridLineOpts","createPointLabelContext","logarithmic","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","animate","INTERVALS","millisecond","common","steps","quarter","UNITS","sorter","adapter","_adapter","isoWeekday","_parseOpts","startOf","determineUnitForAutoTicks","minUnit","capacity","interval","determineUnitForFormatting","determineMajorUnit","addTick","timestamps","setMajorTicks","majorUnit","ticksFromTimestamps","_unit","_majorUnit","_offsets","_normalized","displayFormats","formats","normalized","_applyBounds","_getLabelBounds","endOf","getLabelTimestamps","timeOpts","_generate","_getLabelCapacity","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","minorFormat","majorFormat","_tickFormatFunction","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","_getLabelSize","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","startTime","maxIntervals","clearInterval","button","setInterval","main","fecha","token","twoDigits","threeDigits","fourDigits","word","literal","regexEscape","shorten","sLen","newArr","substr","monthUpdate","arrName","i18n","pad","DoFn","formatFlags","dateObj","DD","Do","dd","ddd","dddd","MM","MMM","MMMM","yy","yyyy","hh","HH","mm","ss","SS","SSS","ZZ","getTimezoneOffset","parseFlags","da","cent","isPm","timezoneOffset","masks","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","i18nSettings","literals","$0","$1","dateStr","dateInfo","parseInfo","newFormat","UTC","broadcast","eventName","$children","child","$root"],"mappings":"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","file":"js/chunk-248cd800.fd612139.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_setup.creators.loading),expression:\"creators.loading\"}],staticClass:\"creators-performans\"},[_c('h2',{staticClass:\"headline-2\"},[_vm._v(\" \"+_vm._s(_setup.locale.title)+\" \")]),_c('div',{staticClass:\"creators-performans__bar\"},[_c(_setup.ElDatePicker,{attrs:{\"type\":\"daterange\",\"align\":\"right\",\"start-placeholder\":\"Start Date\",\"end-placeholder\":\"End Date\",\"default-value\":\"2012-05-05\",\"range-separator\":\"–\",\"picker-options\":_setup.pickerOptions,\"clearable\":false,\"format\":\"dd.MM.yyyy\"},model:{value:(_setup.dates),callback:function ($$v) {_setup.dates=$$v},expression:\"dates\"}}),_c(_setup.ElButton,{attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":_setup.downloadCSV}},[_vm._v(\" \"+_vm._s(_setup.locale.downloadCSV)+\" \")])],1),(_setup.creators.creators.length)?_c(_setup.CreatorsTable,{attrs:{\"filters\":_setup.filters},on:{\"update:filters\":function($event){_setup.filters=$event}}}):(!_setup.creators.loading)?_c('div',{staticClass:\"no-data-msg text-l-regular\"},[_vm._v(\" \"+_vm._s(_setup.locale.noData)+\" \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(_setup.ElTable,{staticClass:\"creators-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_setup.items,\"default-sort\":{ prop: 'impressions', order: 'descending' }},on:{\"sort-change\":_setup.onSortChange}},[_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.creator},scopedSlots:_vm._u([{key:\"default\",fn:function({ row, $index }){return [_c('div',{staticClass:\"creators-table__creator\"},[_c('div',{staticClass:\"creators-table__creator-index\"},[_vm._v(\" \"+_vm._s(_setup.getRealRowIndex($index))+\" \")]),_c('div',{staticClass:\"creators-table__creator-image\",style:({ backgroundImage: 'url(' + row.image + ')' })}),_c('div',{staticClass:\"creators-table__creator-name\"},[_vm._v(\" \"+_vm._s(row.name)+\" \")]),_c('div',{staticClass:\"creators-table__creator-platform\"},[_c('SvgIcon',{directives:[{name:\"show\",rawName:\"v-show\",value:(row.platform === 'twitch'),expression:\"row.platform === 'twitch'\"}],attrs:{\"name\":\"twitch-icon\",\"width\":\"16\",\"height\":\"16\"}}),_c('SvgIcon',{directives:[{name:\"show\",rawName:\"v-show\",value:(row.platform === 'youtube'),expression:\"row.platform === 'youtube'\"}],attrs:{\"name\":\"youtube-icon\",\"width\":\"16\",\"height\":\"16\"}}),_c('SvgIcon',{directives:[{name:\"show\",rawName:\"v-show\",value:(row.platform === 'trovo'),expression:\"row.platform === 'trovo'\"}],attrs:{\"name\":\"trovo-icon\",\"width\":\"16\",\"height\":\"16\"}})],1)])]}}])}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.impressions,\"prop\":\"impressions\",\"sortable\":\"custom\",\"formatter\":(row, column, cellValue, index) => {\n return _setup.numberToRanks(cellValue)\n }}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.clicks,\"prop\":\"clicks\",\"sortable\":\"custom\",\"formatter\":(row, column, cellValue, index) => {\n return _setup.numberToRanks(cellValue)\n }}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.ctr,\"prop\":\"ctr\",\"sortable\":\"custom\",\"formatter\":(row, column, cellValue, index) => {\n if (!cellValue) {\n return 0\n }\n return parseFloat((cellValue || 0) * 100).toFixed(2) + '%'\n }}})],1),_c(_setup.ElPagination,{attrs:{\"layout\":\"prev, pager, next\",\"prev-text\":_setup.locale.prev,\"next-text\":_setup.locale.next,\"page-size\":_setup.creators.perPage,\"current-page\":_setup.props.filters.page,\"total\":_setup.creators.total,\"hide-on-single-page\":\"\"},on:{\"current-change\":_setup.onPageChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport ElPagination from 'element/ElPagination'\nimport ElTable from 'element/ElTable'\nimport ElTableColumn from 'element/ElTableColumn'\nimport { numberToRanks } from 'lib/filters'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { computed } from 'vue'\n\nimport { vm } from '@/main'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CreatorsTable',\n props: {\n filters: null\n },\n emits: ['update:filters'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n filters: {\n page: number\n sortBy: string | null\n sortDirection: string | null\n }\n}\n\n\n\n\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n next: useRootLocale('pagination.next'),\n prev: useRootLocale('pagination.prev'),\n creator: useRootLocale(`${baseDir}.creator`),\n impressions: useRootLocale(`${baseDir}.impressions`),\n clicks: useRootLocale(`${baseDir}.clicks`),\n ctr: useRootLocale(`${baseDir}.CTR`),\n }\n})\n\nconst creators = computed(() => vm.$store.getters['adAnalytics/creators'])\nconst items = computed(() => creators.value.creators)\n\nconst getRealRowIndex = (index: number) => {\n return index + 1 + creators.value.perPage * (props.filters.page - 1)\n}\n\nconst onSortChange = (params: {order: string; prop: string}) => {\n const { order, prop } = params\n emit('update:filters', {\n ...props.filters,\n sortBy: prop,\n sortDirection: order,\n })\n}\n\nconst onPageChange = (newPage: number) => {\n emit('update:filters', {\n ...props.filters,\n page: newPage,\n })\n}\n\nreturn { __sfc: true,props, emit, locale, creators, items, getRealRowIndex, onSortChange, onPageChange, ElPagination, ElTable, ElTableColumn, numberToRanks }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreatorsTable.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreatorsTable.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CreatorsTable.vue?vue&type=template&id=2ad5ff6e&scoped=true&\"\nimport script from \"./CreatorsTable.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CreatorsTable.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CreatorsTable.vue?vue&type=style&index=0&id=2ad5ff6e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2ad5ff6e\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, onMounted, ref, watch } from 'vue'\nimport moment from 'moment'\nimport ElButton from 'element/ElButton'\nimport ElDatePicker from 'element/ElDatePicker'\nimport loading from 'element/Loading'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { useRoute } from 'lib/helpers/useRoute'\nimport { useRouter } from 'lib/helpers/useRouter'\nimport CreatorsTable from '../CreatorsTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CreatorsPerformance',\n setup(__props) {\n\nconst vLoading = loading\nconst route = useRoute()\nconst router = useRouter()\nconst dates = ref<[null | Date, null | Date]>([null, null])\n\nconst filters = ref({\n page: 1,\n sortDirection: 'descending',\n sortBy: 'impressions',\n})\n\nconst creators = computed(() => vm.$store.getters['adAnalytics/creators'])\nconst currentDateInPicker = computed(() => {\n const lastDay = moment(creators.value.end)\n if (moment().diff(lastDay, 'days') <= 0) {\n return moment().subtract(1, 'days').toDate()\n }\n return new Date()\n})\nconst pickerOptions = computed(() => ({\n disabledDate: (date) => {\n return date > currentDateInPicker.value || date < new Date(creators.value.start)\n },\n}))\n\nconst formattedDates = computed(() => {\n return {\n start: moment(dates.value[0]).format('YYYY-MM-DD'),\n end: moment(dates.value[1]).format('YYYY-MM-DD'),\n }\n})\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n title: useRootLocale(`${baseDir}.creatorsTab.title`),\n downloadCSV: useRootLocale(`${baseDir}.downloadCSV`),\n noData: useRootLocale('other.noData'),\n }\n})\n\nwatch(formattedDates, (value, oldValue) => {\n if (oldValue.start !== 'Invalid date') {\n router.replace({ query: { start: value.start, end: value.end } })\n }\n fetchCreators()\n})\n\nwatch(filters, () => {\n fetchCreators()\n})\n\nconst fetchCreators = () => {\n const params = {\n start: formattedDates.value.start,\n end: formattedDates.value.end,\n ...filters.value,\n }\n vm.$store.dispatch('adAnalytics/fetchCreators', params)\n}\n\nconst downloadCSV = () => {\n const params = {\n start: formattedDates.value.start,\n end: formattedDates.value.end,\n type: 'creators',\n }\n vm.$store.dispatch('adAnalytics/downloadReport', params)\n}\n\nonMounted(() => {\n const dateStart = new Date(route.query?.start as string)\n const dateEnd = new Date(route.query?.end as string)\n dates.value = [dateStart, dateEnd]\n})\n\nreturn { __sfc: true,vLoading, route, router, dates, filters, creators, currentDateInPicker, pickerOptions, formattedDates, locale, fetchCreators, downloadCSV, ElButton, ElDatePicker, loading, CreatorsTable }\n}\n\n})","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreatorsPerformance.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreatorsPerformance.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CreatorsPerformance.vue?vue&type=template&id=128c5bee&scoped=true&\"\nimport script from \"./CreatorsPerformance.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CreatorsPerformance.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CreatorsPerformance.vue?vue&type=style&index=0&id=128c5bee&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"128c5bee\",\n null\n \n)\n\nexport default component.exports","import { getCurrentInstance } from 'vue'\n\nexport const useRouter = () => {\n const vm = getCurrentInstance()\n if (!vm) throw new Error('must be called in setup')\n\n return vm.proxy.$router\n}\n","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoriesPerformance.vue?vue&type=style&index=0&id=5c13984e&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(_setup.DashboardTitle,{attrs:{\"title\":_vm.title},scopedSlots:_vm._u([{key:\"right\",fn:function(){return [(_vm.showCopyLink)?_c(_setup.ElButton,{staticClass:\"copy-link-button\",attrs:{\"size\":\"large\",\"type\":_setup.copyLinkState ? 'success' : 'primary'},on:{\"click\":_setup.copyLink}},[_vm._v(\" \"+_vm._s(_setup.copyLinkState ? _setup.locale.copyLinkSuccess : _setup.locale.copyLink)+\" \")]):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, ref } from 'vue'\nimport ElButton from 'element/ElButton'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { useRoute } from 'lib/helpers/useRoute'\nimport DashboardTitle from 'components/layouts/DashboardLayout/components/DashboardTitle.vue'\n\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Header',\n props: {\n title: null,\n showCopyLink: { type: Boolean }\n },\n setup(__props: any) {\n\nconst copyLinkState = ref(false)\nconst route = useRoute()\n\n\n\nconst locale = computed(() => ({\n copyLink: useRootLocale('button.copyLink.static'),\n copyLinkSuccess: useRootLocale('button.copyLink.success'),\n}))\n\nconst campaignSlug = computed(() => vm.$store.getters['adAnalytics/campaignSlug'])\n\nconst copyLink = () => {\n const start = route.query.start\n const end = route.query.end\n const link = `${window.location.origin}/campaign-analytics/${campaignSlug.value}?start=${start}&end=${end}`\n vm.$clipboard(link)\n\n copyLinkState.value = true\n setTimeout(() => {\n copyLinkState.value = false\n }, 2000)\n}\n\nreturn { __sfc: true,copyLinkState, route, locale, campaignSlug, copyLink, ElButton, DashboardTitle }\n}\n\n})","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=13fcb36c&scoped=true&\"\nimport script from \"./Header.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Header.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=13fcb36c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13fcb36c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_setup.isLoading),expression:\"isLoading\"}],staticClass:\"campaign-performans\"},[_c('h2',{staticClass:\"headline-2\"},[_vm._v(\" \"+_vm._s(_setup.locale.title)+\" \")]),_c('div',{staticClass:\"campaign-performans__bar\"},[_c(_setup.ElDatePicker,{attrs:{\"type\":\"daterange\",\"align\":\"right\",\"start-placeholder\":\"Start Date\",\"end-placeholder\":\"End Date\",\"default-value\":\"2010-10-01\",\"picker-options\":_setup.pickerOptions,\"clearable\":false,\"format\":\"dd.MM.yyyy\"},model:{value:(_setup.dates),callback:function ($$v) {_setup.dates=$$v},expression:\"dates\"}}),_c(_setup.ElButton,{attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":_setup.downloadCSV}},[_vm._v(\" \"+_vm._s(_setup.locale.downloadCSV)+\" \")])],1),_c(_setup.LineStatistic,{attrs:{\"dates\":_setup.formattedDates}}),_c(_setup.CategoriesTable,{attrs:{\"dates\":_setup.formattedDates}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(_setup.ElTable,{staticClass:\"creators-table\",staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_setup.items,\"default-sort\":{ prop: 'impressions', order: 'descending' }}},[_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.category},scopedSlots:_vm._u([{key:\"default\",fn:function({ row, $index }){return [_c('div',{staticClass:\"creators-table__creator\"},[_c('div',{staticClass:\"creators-table__creator-index\"},[_vm._v(\" \"+_vm._s($index + 1 + (_setup.page - 1) * _setup.categories.perPage)+\" \")]),_c('div',{staticClass:\"creators-table__creator-image\",style:('backgroundImage: url(' + row.image.replace(/\\s+/g, '') + ')')}),_c('div',{staticClass:\"creators-table__creator-name\"},[_vm._v(\" \"+_vm._s(row.name)+\" \")])])]}}])}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.impressions,\"prop\":\"impressions\",\"sortable\":\"\",\"formatter\":(row, column, cellValue, index) => {\n return _setup.numberToRanks(cellValue.toFixed(0))\n }}})],1),_c(_setup.ElPagination,{attrs:{\"layout\":\"prev, pager, next\",\"prev-text\":_setup.locale.prev,\"next-text\":_setup.locale.next,\"page-size\":_setup.categories.perPage,\"current-page\":_setup.page,\"total\":_setup.categories.total,\"hide-on-single-page\":\"\"},on:{\"update:currentPage\":function($event){_setup.page=$event},\"update:current-page\":function($event){_setup.page=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport ElPagination from 'element/ElPagination'\nimport ElTable from 'element/ElTable'\nimport ElTableColumn from 'element/ElTableColumn'\nimport { numberToRanks } from 'lib/filters'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { computed, onMounted, ref, watch } from 'vue'\n\nimport { vm } from '@/main'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CategoriesTable',\n props: {\n dates: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n dates: {\n start: string\n end: string\n }\n}\n\n\n\nconst page = ref(1)\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n next: useRootLocale('pagination.next'),\n prev: useRootLocale('pagination.prev'),\n category: useRootLocale(`${baseDir}.category`),\n impressions: useRootLocale(`${baseDir}.impressions`),\n }\n})\n\nconst categories = computed(() => vm.$store.getters['adAnalytics/categoriesImpressions'])\nconst items = computed(() => categories.value.categories)\n\nwatch(() => props.dates, () => {\n fetchData()\n})\nwatch(page, () => {\n fetchData()\n})\n\nconst fetchData = () => {\n const formattedParams = {\n start: props.dates.start,\n end: props.dates.end,\n page: page.value,\n }\n vm.$store.dispatch('adAnalytics/fetchCategoriesImpressions', formattedParams)\n}\n\nonMounted(() => {\n if (props.dates.start !== 'Invalid date') {\n fetchData()\n }\n})\n\nreturn { __sfc: true,props, page, locale, categories, items, fetchData, ElPagination, ElTable, ElTableColumn, numberToRanks }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoriesTable.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoriesTable.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CategoriesTable.vue?vue&type=template&id=23b2a993&scoped=true&\"\nimport script from \"./CategoriesTable.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CategoriesTable.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CategoriesTable.vue?vue&type=style&index=0&id=23b2a993&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"23b2a993\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"line-statistic\"},[_c('div',{staticClass:\"line-statistic__title\"},[_vm._v(\" \"+_vm._s(_setup.locale.categories)+\" \")]),_c('div',{staticClass:\"line-statistic__chart\"},_vm._l((_setup.categories),function(item){return _c('div',{key:item.id,staticClass:\"line-statistic__chart-item\",style:(`width: calc(${item.percent}% - 2px); background-color: ${item.color};`)})}),0),_c('div',{staticClass:\"line-statistic__legend\"},_vm._l((_setup.categories),function(item){return _c('div',{key:item.id,staticClass:\"line-statistic__legend-item\"},[_c('div',{staticClass:\"line-statistic__legend-color\",style:(`background-color: ${item.color}`)}),_c('div',{staticClass:\"line-statistic__legend-percent\"},[_vm._v(\" \"+_vm._s(item.percent)+\"% \")]),_c('div',{staticClass:\"line-statistic__legend-name\"},[_vm._v(\" \"+_vm._s(item.name)+\" \")])])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, onMounted, watch } from 'vue'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LineStatistic',\n props: {\n dates: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n dates: {\n start: string,\n end: string,\n },\n}\n\n\n\nconst colors = ['#266FFE', '#13BF34', '#F23D3D', '#FFCE0A', '#8723EE', '#22CAFF', '#CCCCCC']\n\nconst categories = computed(() => {\n return vm.$store.getters['adAnalytics/categoriesDistribution'].categories.map((item, index) => {\n return {\n ...item,\n id: index + 1,\n color: colors[index],\n }\n })\n})\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n categories: useRootLocale(`${baseDir}.categories`),\n }\n})\n\nwatch(() => props.dates, () => {\n fetchData()\n})\n\nconst fetchData = () => {\n const formattedParams = {\n start: props.dates.start,\n end: props.dates.end,\n }\n vm.$store.dispatch('adAnalytics/fetchCategoriesDistribution', formattedParams)\n}\n\nonMounted(() => {\n if (props.dates.start !== 'Invalid date') {\n fetchData()\n }\n})\n\nreturn { __sfc: true,props, colors, categories, locale, fetchData }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineStatistic.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineStatistic.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./LineStatistic.vue?vue&type=template&id=14f31538&scoped=true&\"\nimport script from \"./LineStatistic.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./LineStatistic.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./LineStatistic.vue?vue&type=style&index=0&id=14f31538&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"14f31538\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, onMounted, ref, watch } from 'vue'\nimport moment from 'moment'\nimport ElButton from 'element/ElButton'\nimport ElDatePicker from 'element/ElDatePicker'\nimport loading from 'element/Loading'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { useRoute } from 'lib/helpers/useRoute'\nimport { useRouter } from 'lib/helpers/useRouter'\nimport CategoriesTable from '../CategoriesTable.vue'\nimport LineStatistic from '../LineStatistic.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CategoriesPerformance',\n setup(__props) {\n\nconst vLoading = loading\nconst route = useRoute()\nconst router = useRouter()\nconst dates = ref<[null | Date, null | Date]>([null, null])\n\nconst campaigns = computed(() => vm.$store.getters['adAnalytics/campaigns'])\n\nconst currentDateInPicker = computed(() => {\n const lastDay = moment(campaigns.value.end)\n if (moment().diff(lastDay, 'days') <= 0) {\n return moment().subtract(1, 'days').toDate()\n }\n return new Date()\n})\nconst pickerOptions = computed(() => ({\n disabledDate: (date) => {\n return date > currentDateInPicker.value || date < new Date(campaigns.value.start)\n },\n}))\n\nconst formattedDates = computed(() => {\n return {\n start: moment(dates.value[0]).format('YYYY-MM-DD'),\n end: moment(dates.value[1]).format('YYYY-MM-DD'),\n }\n})\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n title: useRootLocale(`${baseDir}.categoriesTab.title`),\n downloadCSV: useRootLocale(`${baseDir}.downloadCSV`),\n }\n})\nconst categoriesImpressions = computed(() => vm.$store.getters['adAnalytics/categoriesImpressions'])\nconst categoriesDistribution = computed(() => vm.$store.getters['adAnalytics/categoriesDistribution'])\nconst isLoading = computed(() => categoriesImpressions.value.loading && categoriesDistribution.value.loading)\n\nwatch(formattedDates, (value, oldValue) => {\n if (oldValue.start !== 'Invalid date') {\n router.replace({ query: { start: value.start, end: value.end } })\n }\n})\n\nconst downloadCSV = () => {\n const params = {\n start: formattedDates.value.start,\n end: formattedDates.value.end,\n type: 'categories',\n }\n vm.$store.dispatch('adAnalytics/downloadReport', params)\n}\n\nonMounted(() => {\n const dateStart = new Date(route.query?.start as string)\n const dateEnd = new Date(route.query?.end as string)\n dates.value = [dateStart, dateEnd]\n})\n\nreturn { __sfc: true,vLoading, route, router, dates, campaigns, currentDateInPicker, pickerOptions, formattedDates, locale, categoriesImpressions, categoriesDistribution, isLoading, downloadCSV, ElButton, ElDatePicker, CategoriesTable, LineStatistic }\n}\n\n})","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoriesPerformance.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoriesPerformance.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CategoriesPerformance.vue?vue&type=template&id=5c13984e&scoped=true&\"\nimport script from \"./CategoriesPerformance.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CategoriesPerformance.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CategoriesPerformance.vue?vue&type=style&index=0&id=5c13984e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5c13984e\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CategoriesTable.vue?vue&type=style&index=0&id=23b2a993&prod&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UplifyPromo.vue?vue&type=style&index=0&id=403b9d2a&prod&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreatorsTable.vue?vue&type=style&index=0&id=2ad5ff6e&prod&lang=scss&scoped=true&\"","import { getCurrentInstance } from 'vue'\n\nexport const useRoute = () => {\n const vm = getCurrentInstance()\n if (!vm) throw new Error('must be called in setup')\n\n return vm.proxy.$route\n}\n","import { Api } from 'lib/api/instance'\nimport parseSlug from 'lib/helpers/parseSlug'\n\nconst defaultState = {\n campaignSlug: '',\n campaignType: null,\n activeTab: 'overview', // overview , creators, categories\n campaignInfo: {\n title: '',\n status: false,\n updatedAt: '',\n },\n campaigns: {\n loading: false,\n title: '',\n status: false,\n updatedAt: '',\n start: '',\n end: '',\n impressions: 0,\n impressions_limit: 0,\n spent: 0,\n spent_limit: 0,\n ctr: 0,\n clicks_total: 0,\n fills: 0,\n reach: 0,\n channels: 0,\n categories: 0,\n avg_cpm: 0,\n data: [],\n creatives: [],\n top_channels: [],\n top_categories: [],\n },\n creators: {\n loading: false,\n title: '',\n status: false,\n updatedAt: '',\n start: '',\n end: '',\n per_page: 0,\n total: 0,\n creators: [],\n },\n categoriesImpressions: {\n loading: false,\n title: '',\n status: '',\n updatedAt: '',\n start: '',\n end: '',\n categories: [],\n },\n categoriesDistribution: {\n loading: false,\n categories: [],\n },\n}\n\nconst getDefaultState = () => {\n return JSON.parse(JSON.stringify(defaultState))\n}\n\nexport default {\n namespaced: true,\n state: getDefaultState(),\n mutations: {\n setCampaigns: (state, payload) => {\n state.campaigns = {\n loading: false,\n ...payload,\n }\n },\n setCreators: (state, payload) => {\n state.creators = {\n loading: false,\n ...payload,\n }\n },\n setCategoriesImpressions: (state, payload) => {\n state.categoriesImpressions = {\n loading: false,\n ...payload,\n }\n },\n setCategoriesDistribution: (state, payload) => {\n state.categoriesDistribution = {\n loading: false,\n categories: payload,\n }\n },\n setCampaignInfo: (state, payload) => {\n state.campaignInfo = {\n title: payload.title,\n status: payload.status,\n updatedAt: payload.updatedAt,\n }\n },\n setActiveTab: (state, payload) => {\n state.activeTab = payload\n },\n setCampaignSlug: (state, payload) => {\n state.campaignSlug = payload\n },\n setCampaignType: (state, payload) => {\n state.campaignType = payload\n },\n resetState: (state) => {\n Object.assign(state, getDefaultState())\n },\n },\n actions: {\n async fetchCampaigns ({ commit, state }, params) {\n try {\n state.campaigns.loading = true\n const slug = state.campaignSlug\n const res = await Api.get(`statistic/campaigns/${state.campaignType}/campaigns/${slug}/${params.start}/${params.end}`)\n commit('setCampaigns', res.data)\n commit('setCampaignInfo', res.data)\n }\n finally {\n\n }\n },\n async fetchCreators ({ commit, state }, params) {\n let filtersString = ''\n\n const directions = {\n descending: 'desc',\n ascending: 'asc',\n }\n\n if (params.sortBy && params.sortDirection) {\n filtersString = `&sortBy=${params.sortBy}&sortDirection=${directions[params.sortDirection]}`\n }\n\n try {\n state.creators.loading = true\n const slug = state.campaignSlug\n const res = await Api.get(`statistic/campaigns/${state.campaignType}/creators/${slug}/${params.start}/${params.end}?page=${params.page}${filtersString}`)\n commit('setCreators', { ...res.data, perPage: res.per_page, total: res.total })\n commit('setCampaignInfo', res.data)\n }\n finally {\n\n }\n },\n async fetchCategoriesImpressions ({ commit, state }, params) {\n try {\n state.categoriesImpressions.loading = true\n const slug = state.campaignSlug\n const res = await Api.get(`statistic/campaigns/${state.campaignType}/categories/${slug}/${params.start}/${params.end}?page=${params.page}`)\n commit('setCategoriesImpressions', { ...res.data, perPage: res.per_page, total: res.total })\n commit('setCampaignInfo', res.data)\n }\n finally {\n\n }\n },\n async fetchCategoriesDistribution ({ commit, state }, params) {\n try {\n state.categoriesDistribution.loading = true\n const slug = state.campaignSlug\n const res = await Api.get(`statistic/campaigns/${state.campaignType}/categories/distribution/${slug}/${params.start}/${params.end}`)\n commit('setCategoriesDistribution', res.data)\n }\n finally {\n\n }\n },\n setActiveTab: ({ commit }, tab) => {\n commit('setActiveTab', tab)\n },\n setCampaignSlug: ({ commit }, slug) => {\n commit('setCampaignSlug', slug)\n },\n setCampaignType: ({ commit }, slug) => {\n const { type } = parseSlug(slug)\n\n switch (type) {\n case 'brand_awareness':\n commit('setCampaignType', 'brand-awareness')\n break\n case 'performance':\n commit('setCampaignType', 'performance')\n break\n }\n },\n resetState: ({ commit }) => {\n commit('resetState')\n },\n downloadReport: ({ state }, params) => {\n const docType = params.docType ? `${params.docType}/` : ''\n const slug = state.campaignSlug\n window.open(`${process.env.VUE_APP_API_URL}statistic/campaigns/${state.campaignType}/${params.type}/${slug}/${params.start}/${params.end}/${docType}download`)\n },\n },\n getters: {\n activeTab: ({ activeTab }) => activeTab,\n campaignSlug: ({ campaignSlug }) => campaignSlug,\n campaignInfo: ({ campaignInfo }) => campaignInfo,\n campaigns: ({ campaigns }) => campaigns,\n creators: ({ creators }) => creators,\n categoriesImpressions: ({ categoriesImpressions }) => categoriesImpressions,\n categoriesDistribution: ({ categoriesDistribution }) => categoriesDistribution,\n },\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"el-tabs__active-bar\",class:`is-${ _vm.rootTabs.tabPosition }`,style:(_vm.barStyle)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tab-bar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tab-bar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./tab-bar.vue?vue&type=template&id=d5d6a716&\"\nimport script from \"./tab-bar.vue?vue&type=script&lang=js&\"\nexport * from \"./tab-bar.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n","var render, staticRenderFns\nimport script from \"./tab-nav.vue?vue&type=script&lang=js&\"\nexport * from \"./tab-nav.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render, staticRenderFns\nimport script from \"./tabs.vue?vue&type=script&lang=js&\"\nexport * from \"./tabs.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tab-nav.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tab-nav.vue?vue&type=script&lang=js&\"","\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tabs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tabs.vue?vue&type=script&lang=js&\"","import ElTabs from './src/tabs';\n\n/* istanbul ignore next */\nElTabs.install = function(Vue) {\n Vue.component(ElTabs.name, ElTabs);\n};\n\nexport default ElTabs;\n","import 'element/css/tabs.scss'\n\nimport Tabs from 'element-ui/packages/tabs'\n\nexport default Tabs\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"analytics-tabs\"},[_c(_setup.ElTabs,{attrs:{\"value\":_setup.tab},on:{\"input\":_setup.setActiveTab}},_vm._l((_setup.tabs),function(item){return _c(_setup.ElTabPane,{key:item.value,attrs:{\"label\":_setup.locale[item.value],\"name\":item.value,\"disabled\":item.disabled}})}),1),_c('div',{staticClass:\"analytics-tabs__meta\"},[_c('div',{staticClass:\"analytics-tabs__status\"},[_vm._v(\" \"+_vm._s(_setup.locale.status)+\": \"),(_vm.status)?_c('span',{staticClass:\"_active\"},[_vm._v(_vm._s(_setup.locale.active))]):_c('span',[_vm._v(_vm._s(_setup.locale.inactive))])]),_c('div',{staticClass:\"analytics-tabs__updated\"},[_vm._v(\" \"+_vm._s(_setup.locale.updated)+\": \"+_vm._s(_vm.updatedAt)+\" \")])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\nimport ElTabPane from 'element/ElTabPane'\nimport ElTabs from 'element/ElTabs'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Tabs',\n props: {\n status: { type: Boolean },\n updatedAt: null\n },\n setup(__props: any) {\n\n\n\nconst tabs = [\n {\n value: 'overview',\n disabled: false,\n },\n {\n value: 'creators',\n disabled: false,\n },\n {\n value: 'categories',\n disabled: false,\n },\n]\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n overview: useRootLocale(`${baseDir}.campaignOverview`),\n creators: useRootLocale(`${baseDir}.creators`),\n categories: useRootLocale(`${baseDir}.categories`),\n status: useRootLocale(`${baseDir}.status`),\n active: useRootLocale(`${baseDir}.active`),\n inactive: useRootLocale(`${baseDir}.inactive`),\n updated: useRootLocale(`${baseDir}.updated`),\n }\n})\n\nconst tab = computed(() => vm.$store.getters['adAnalytics/activeTab'])\n\nconst setActiveTab = (val: string) => {\n vm.$store.dispatch('adAnalytics/setActiveTab', val)\n}\n\nreturn { __sfc: true,tabs, locale, tab, setActiveTab, ElTabPane, ElTabs }\n}\n\n})","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Tabs.vue?vue&type=template&id=70fc54c0&scoped=true&\"\nimport script from \"./Tabs.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Tabs.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Tabs.vue?vue&type=style&index=0&id=70fc54c0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"70fc54c0\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=13fcb36c&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return ((!_vm.lazy || _vm.loaded) || _vm.active)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.active),expression:\"active\"}],staticClass:\"el-tab-pane\",attrs:{\"role\":\"tabpanel\",\"aria-hidden\":!_vm.active,\"id\":`pane-${_vm.paneName}`,\"aria-labelledby\":`tab-${_vm.paneName}`}},[_vm._t(\"default\")],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tab-pane.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./tab-pane.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./tab-pane.vue?vue&type=template&id=702b58b3&\"\nimport script from \"./tab-pane.vue?vue&type=script&lang=js&\"\nexport * from \"./tab-pane.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import TabPane from '../tabs/src/tab-pane.vue';\n\n/* istanbul ignore next */\nTabPane.install = function(Vue) {\n Vue.component(TabPane.name, TabPane);\n};\n\nexport default TabPane;\n","import TabPane from 'element-ui/packages/tab-pane'\n\nexport default TabPane\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=style&index=0&id=48a264d9&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"el-loading-fade\"},on:{\"after-leave\":_vm.handleAfterLeave}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"el-loading-mask\",class:[_vm.customClass, { 'is-fullscreen': _vm.fullscreen }],style:({ backgroundColor: _vm.background || '' })},[_c('div',{class:_vm.loadingSpinnerClasses},[(!_vm.spinner)?_c('svg',{staticClass:\"circular\",attrs:{\"viewBox\":\"25 25 50 50\"}},[_c('circle',{staticClass:\"path\",attrs:{\"cx\":\"50\",\"cy\":\"50\",\"r\":\"20\",\"fill\":\"none\"}})]):_c('i',{class:_vm.spinner}),(_vm.text)?_c('p',{staticClass:\"el-loading-text\"},[_vm._v(\" \"+_vm._s(_vm.text)+\" \")]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=5c16966e&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tabs.vue?vue&type=style&index=0&id=70fc54c0&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"analytics-page\"},[_c(_setup.PageHeader),_c('div',{staticClass:\"analytics-page__main\"},[_c(_setup.Header,{attrs:{\"title\":_setup.campaignInfo.title,\"show-copy-link\":false}}),_c(_setup.Tabs,{attrs:{\"status\":_setup.campaignInfo.status,\"updated-at\":_setup.campaignInfo.updatedAt}}),(_setup.tab === 'overview')?[_c(_setup.CampaignPerformance)]:_vm._e(),(_setup.tab === 'creators')?[_c(_setup.CreatorsPerformance)]:_vm._e(),(_setup.tab === 'categories')?[_c(_setup.CategoriesPerformance)]:_vm._e()],2),_c(_setup.UplifyPromo)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"header\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c(_setup.UplifyLogo)],1),_c(_setup.ElButton,{attrs:{\"href\":\"/test\",\"type\":\"success\"},on:{\"click\":_setup.onDemoClick}},[_vm._v(\" \"+_vm._s(_setup.locale.requestDemo)+\" \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\nimport ElButton from 'element/ElButton'\nimport UplifyLogo from 'components/UplifyLogo.vue'\nimport { useRootLocale } from 'lib/helpers/useLocale'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PageHeader',\n setup(__props) {\n\nconst locale = computed(() => ({\n requestDemo: useRootLocale('sidebar.requestDemo'),\n}))\n\nconst onDemoClick = () => {\n window.open('mailto:sales@uplify.app?subject=\"Demo request\"', '_self')\n}\n\nreturn { __sfc: true,locale, onDemoClick, ElButton, UplifyLogo }\n}\n\n})","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageHeader.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PageHeader.vue?vue&type=template&id=48a264d9&scoped=true&\"\nimport script from \"./PageHeader.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PageHeader.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./PageHeader.vue?vue&type=style&index=0&id=48a264d9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48a264d9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"uplifyPromo\"},[_c('div',{staticClass:\"uplifyPromo__text\"},[_c('div',{staticClass:\"uplifyPromo__subtitle\"},[_vm._v(\" \"+_vm._s(_setup.locale.poweredBy)+\" \")]),_c('div',{staticClass:\"uplifyPromo__title headline\"},[_vm._v(\" \"+_vm._s(_setup.locale.runAtestCampaignToday)+\" \")])]),_c('div',{staticClass:\"uplifyPromo__buttons\"},[_c(_setup.ElButton,{attrs:{\"type\":\"info\",\"plain\":\"\"},on:{\"click\":_setup.onGetStartedClick}},[_vm._v(\" \"+_vm._s(_setup.locale.getStarted)+\" \")]),_c(_setup.ElButton,{attrs:{\"type\":\"success\"},on:{\"click\":_setup.onDemoClick}},[_vm._v(\" \"+_vm._s(_setup.locale.requestDemo)+\" \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\nimport ElButton from 'element/ElButton'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { useRouter } from 'lib/helpers/useRouter'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'UplifyPromo',\n setup(__props) {\n\nconst locale = computed(() => ({\n poweredBy: useRootLocale('views.widget.poweredBy'),\n runAtestCampaignToday: useRootLocale('views.partner.analytics.runATestCampaignToday'),\n requestDemo: useRootLocale('sidebar.requestDemo'),\n getStarted: useRootLocale('button.getStarted'),\n}))\n\nconst router = useRouter()\n\nconst onDemoClick = () => {\n window.open('mailto:sales@uplify.app?subject=\"Demo request\"', '_self')\n}\nconst onGetStartedClick = () => {\n router.push('/auth/partner/request')\n}\n\nreturn { __sfc: true,locale, router, onDemoClick, onGetStartedClick, ElButton }\n}\n\n})","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UplifyPromo.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UplifyPromo.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./UplifyPromo.vue?vue&type=template&id=403b9d2a&scoped=true&\"\nimport script from \"./UplifyPromo.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./UplifyPromo.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./UplifyPromo.vue?vue&type=style&index=0&id=403b9d2a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"403b9d2a\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { useRoute } from 'lib/helpers/useRoute'\nimport CampaignPerformance from 'Partner/pages/PartnerAnalytics/components/sections/CampaignPerformance.vue'\nimport CategoriesPerformance from 'Partner/pages/PartnerAnalytics/components/sections/CategoriesPerformance.vue'\nimport CreatorsPerformance from 'Partner/pages/PartnerAnalytics/components/sections/CreatorsPerformance.vue'\nimport Header from 'Partner/pages/PartnerAnalytics/components/sections/Header.vue'\nimport Tabs from 'Partner/pages/PartnerAnalytics/components/sections/Tabs.vue'\nimport store from 'Partner/pages/PartnerAnalytics/store'\nimport { computed, onBeforeUnmount } from 'vue'\n\nimport { vm } from '@/main'\n\nimport PageHeader from './components/PageHeader.vue'\nimport UplifyPromo from './components/UplifyPromo.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nif (!vm.$store.hasModule('adAnalytics')) {\n vm.$store.registerModule('adAnalytics', store)\n}\n\nconst route = useRoute()\nconst campaignInfo = computed(() => vm.$store.getters['adAnalytics/campaignInfo'])\nconst tab = computed(() => vm.$store.getters['adAnalytics/activeTab'])\nconst urlSlug = computed(() => route.params.campaignSlug)\n\nif (urlSlug) {\n vm.$store.dispatch('adAnalytics/setCampaignType', urlSlug.value)\n vm.$store.dispatch('adAnalytics/setCampaignSlug', urlSlug.value)\n}\n\nconst locale = localStorage.getItem('locale')\nvm.$setElementUILocale(locale)\n\nonBeforeUnmount(() => {\n vm.$store.dispatch('adAnalytics/resetState')\n})\n\nreturn { __sfc: true,route, campaignInfo, tab, urlSlug, locale, CampaignPerformance, CategoriesPerformance, CreatorsPerformance, Header, Tabs, PageHeader, UplifyPromo }\n}\n\n})","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=88b48c28&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=88b48c28&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"88b48c28\",\n null\n \n)\n\nexport default component.exports","import { kebabCase } from 'element-ui/src/utils/util';\n/**\n * Show migrating guide in browser console.\n *\n * Usage:\n * import Migrating from 'element-ui/src/mixins/migrating';\n *\n * mixins: [Migrating]\n *\n * add getMigratingConfig method for your component.\n * getMigratingConfig() {\n * return {\n * props: {\n * 'allow-no-selection': 'allow-no-selection is removed.',\n * 'selection-mode': 'selection-mode is removed.'\n * },\n * events: {\n * selectionchange: 'selectionchange is renamed to selection-change.'\n * }\n * };\n * },\n */\nexport default {\n mounted() {\n if (process.env.NODE_ENV === 'production') return;\n if (!this.$vnode) return;\n const { props = {}, events = {} } = this.getMigratingConfig();\n const { data, componentOptions } = this.$vnode;\n const definedProps = data.attrs || {};\n const definedEvents = componentOptions.listeners || {};\n\n for (let propName in definedProps) {\n propName = kebabCase(propName); // compatible with camel case\n if (props[propName]) {\n console.warn(`[Element Migrating][${this.$options.name}][Attribute]: ${props[propName]}`);\n }\n }\n\n for (let eventName in definedEvents) {\n eventName = kebabCase(eventName); // compatible with camel case\n if (events[eventName]) {\n console.warn(`[Element Migrating][${this.$options.name}][Event]: ${events[eventName]}`);\n }\n }\n },\n methods: {\n getMigratingConfig() {\n return {\n props: {},\n events: {}\n };\n }\n }\n};\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=88b48c28&prod&lang=scss&scoped=true&\"","import { Chart, BarController, DoughnutController, LineController, PieController, PolarAreaController, RadarController, BubbleController, ScatterController } from 'chart.js';\n\nvar ChartEmits;\n(function(ChartEmits) {\n ChartEmits[\"ChartRendered\"] = \"chart:rendered\";\n ChartEmits[\"ChartUpdated\"] = \"chart:updated\";\n ChartEmits[\"ChartDestroyed\"] = \"chart:destroyed\";\n ChartEmits[\"LabelsUpdated\"] = \"labels:updated\";\n})(ChartEmits || (ChartEmits = {}));\nfunction chartCreate(createChartFunction, chartData, chartOptions, context) {\n createChartFunction(chartData, chartOptions);\n if (context !== undefined) {\n context.emit(ChartEmits.ChartRendered);\n }\n}\nfunction chartUpdate(chart, context) {\n chart.update();\n if (context !== undefined) {\n context.emit(ChartEmits.ChartUpdated);\n }\n}\nfunction chartDestroy(chart, context) {\n chart.destroy();\n if (context !== undefined) {\n context.emit(ChartEmits.ChartDestroyed);\n }\n}\nfunction getChartData(data, datasetIdKey) {\n const nextData = {\n labels: typeof data.labels === \"undefined\" ? [] : [\n ...data.labels\n ],\n datasets: []\n };\n setChartDatasets(nextData, {\n ...data\n }, datasetIdKey);\n return nextData;\n}\nfunction setChartDatasets(oldData, newData, datasetIdKey) {\n const addedDatasets = [];\n oldData.datasets = newData.datasets.map((nextDataset)=>{\n // given the new set, find it's current match\n const currentDataset = oldData.datasets.find((dataset)=>dataset[datasetIdKey] === nextDataset[datasetIdKey]);\n // There is no original to update, so simply add new one\n if (!currentDataset || !nextDataset.data || addedDatasets.includes(currentDataset)) {\n return {\n ...nextDataset\n };\n }\n addedDatasets.push(currentDataset);\n Object.assign(currentDataset, nextDataset);\n return currentDataset;\n });\n}\nfunction setChartLabels(chart, labels, context) {\n chart.data.labels = labels;\n if (context !== undefined) {\n context.emit(ChartEmits.LabelsUpdated);\n }\n}\nfunction setChartOptions(chart, options) {\n chart.options = {\n ...options\n };\n}\nfunction compareData(newData, oldData) {\n // Get new and old DataSet Labels\n const newDatasetLabels = newData.datasets.map((dataset)=>{\n return dataset.label;\n });\n const oldDatasetLabels = oldData.datasets.map((dataset)=>{\n return dataset.label;\n });\n // Check if Labels are equal and if dataset length is equal\n return oldData.datasets.length === newData.datasets.length && newDatasetLabels.every((value, index)=>value === oldDatasetLabels[index]);\n}\nconst templateError = \"Please remove the tags from your chart component. See https://vue-chartjs.org/guide/#vue-single-file-components\";\n\nconst ANNOTATION_PLUGIN_KEY = \"annotation\";\nfunction generateChart(chartId, chartType, chartController) {\n let _chartRef = {};\n return {\n props: {\n chartData: {\n type: Object,\n required: true\n },\n chartOptions: {\n type: Object,\n default: ()=>{}\n },\n datasetIdKey: {\n type: String,\n default: \"label\"\n },\n chartId: {\n type: String,\n default: chartId\n },\n width: {\n type: Number,\n default: 400\n },\n height: {\n type: Number,\n default: 400\n },\n cssClasses: {\n type: String,\n default: \"\"\n },\n styles: {\n type: Object,\n default: ()=>{}\n },\n plugins: {\n type: Array,\n default: ()=>[]\n }\n },\n data () {\n return {\n _chart: null,\n _id: Math.random().toString(36).substring(2)\n };\n },\n computed: {\n hasAnnotationPlugin () {\n var ref, ref1;\n const pluginSettings = (ref = this.chartOptions) === null || ref === void 0 ? void 0 : (ref1 = ref.plugins) === null || ref1 === void 0 ? void 0 : ref1[ANNOTATION_PLUGIN_KEY];\n return typeof pluginSettings !== \"undefined\";\n }\n },\n created () {\n Chart.register(chartController);\n },\n mounted () {\n _chartRef[this.$data._id] = null;\n if (\"datasets\" in this.chartData && this.chartData.datasets.length > 0) {\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n this.$emit(ChartEmits.ChartRendered);\n }\n },\n watch: {\n chartData: {\n handler: function(newValue, oldValue) {\n this.chartDataHandler(newValue, oldValue);\n },\n deep: true\n },\n chartOptions: {\n handler: function(newValue) {\n this.chartOptionsHandler(newValue);\n },\n deep: true\n }\n },\n methods: {\n renderChart (data, options) {\n const currentChart = this.getCurrentChart();\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n if (!this.$refs.canvas) {\n throw new Error(templateError);\n } else {\n const chartData = getChartData(data, this.datasetIdKey);\n const canvasEl2DContext = this.$refs.canvas.getContext(\"2d\");\n if (canvasEl2DContext !== null) {\n this.setCurrentChart(new Chart(canvasEl2DContext, {\n type: chartType,\n data: chartData,\n options,\n plugins: this.plugins\n }));\n }\n }\n },\n chartDataHandler (newValue, oldValue) {\n const newData = {\n ...newValue\n };\n const oldData = {\n ...oldValue\n };\n const currentChart = this.getCurrentChart();\n if (Object.keys(oldData).length > 0) {\n const isEqualLabelsAndDatasetsLength = compareData(newData, oldData);\n if (isEqualLabelsAndDatasetsLength && currentChart !== null) {\n setChartDatasets(currentChart.data, newData, this.datasetIdKey);\n if (newData.labels !== undefined) {\n setChartLabels(currentChart, newData.labels);\n this.$emit(ChartEmits.LabelsUpdated);\n }\n this.updateChart();\n this.$emit(ChartEmits.ChartUpdated);\n } else {\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n this.$emit(ChartEmits.ChartRendered);\n }\n } else {\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n this.$emit(ChartEmits.ChartRendered);\n }\n },\n chartOptionsHandler (options) {\n const currentChart = this.getCurrentChart();\n if (currentChart !== null) {\n setChartOptions(currentChart, options);\n this.updateChart();\n } else {\n chartCreate(this.renderChart, this.chartData, this.chartOptions);\n }\n },\n updateChart () {\n const currentChart = this.getCurrentChart();\n chartUpdate(currentChart);\n },\n getCurrentChart () {\n return this.hasAnnotationPlugin ? _chartRef[this.$data._id] : this.$data._chart;\n },\n setCurrentChart (chart) {\n this.hasAnnotationPlugin ? _chartRef[this.$data._id] = chart : this.$data._chart = chart;\n }\n },\n beforeDestroy () {\n const currentChart = this.getCurrentChart();\n if (currentChart !== null) {\n chartDestroy(currentChart);\n this.$emit(ChartEmits.ChartDestroyed);\n }\n },\n render: function(createElement) {\n return createElement(\"div\", {\n style: this.styles,\n class: this.cssClasses\n }, [\n createElement(\"canvas\", {\n attrs: {\n id: this.chartId,\n width: this.width,\n height: this.height\n },\n ref: \"canvas\"\n })\n ]);\n }\n };\n}\n/** @type Object */ const Bar = /* #__PURE__ */ generateChart(\"bar-chart\", \"bar\", BarController);\n/** @type Object */ const Doughnut = /* #__PURE__ */ generateChart(\"doughnut-chart\", \"doughnut\", DoughnutController);\n/** @type Object */ const Line = /* #__PURE__ */ generateChart(\"line-chart\", \"line\", LineController);\n/** @type Object */ const Pie = /* #__PURE__ */ generateChart(\"pie-chart\", \"pie\", PieController);\n/** @type Object */ const PolarArea = /* #__PURE__ */ generateChart(\"polar-chart\", \"polarArea\", PolarAreaController);\n/** @type Object */ const Radar = /* #__PURE__ */ generateChart(\"radar-chart\", \"radar\", RadarController);\n/** @type Object */ const Bubble = /* #__PURE__ */ generateChart(\"bubble-chart\", \"bubble\", BubbleController);\n/** @type Object */ const Scatter = /* #__PURE__ */ generateChart(\"scatter-chart\", \"scatter\", ScatterController);\n\nexport { Bar, Bubble, Doughnut, Line, Pie, PolarArea, Radar, Scatter, generateChart };\n//# sourceMappingURL=index.js.map\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"el-pager\",on:{\"click\":_vm.onPagerClick}},[(_vm.pageCount > 0)?_c('li',{staticClass:\"number\",class:{ active: _vm.currentPage === 1, disabled: _vm.disabled }},[_vm._v(\"1\")]):_vm._e(),(_vm.showPrevMore)?_c('li',{staticClass:\"el-icon more btn-quickprev\",class:[_vm.quickprevIconClass, { disabled: _vm.disabled }],on:{\"mouseenter\":function($event){return _vm.onMouseenter('left')},\"mouseleave\":function($event){_vm.quickprevIconClass = 'el-icon-more'}}}):_vm._e(),_vm._l((_vm.pagers),function(pager){return _c('li',{key:pager,staticClass:\"number\",class:{ active: _vm.currentPage === pager, disabled: _vm.disabled }},[_vm._v(_vm._s(pager))])}),(_vm.showNextMore)?_c('li',{staticClass:\"el-icon more btn-quicknext\",class:[_vm.quicknextIconClass, { disabled: _vm.disabled }],on:{\"mouseenter\":function($event){return _vm.onMouseenter('right')},\"mouseleave\":function($event){_vm.quicknextIconClass = 'el-icon-more'}}}):_vm._e(),(_vm.pageCount > 1)?_c('li',{staticClass:\"number\",class:{ active: _vm.currentPage === _vm.pageCount, disabled: _vm.disabled }},[_vm._v(_vm._s(_vm.pageCount))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./pager.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./pager.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./pager.vue?vue&type=template&id=7a31eeb1&\"\nimport script from \"./pager.vue?vue&type=script&lang=js&\"\nexport * from \"./pager.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Select from './src/select';\n\n/* istanbul ignore next */\nSelect.install = function(Vue) {\n Vue.component(Select.name, Select);\n};\n\nexport default Select;\n","import Pager from './pager.vue';\nimport ElSelect from 'element-ui/packages/select';\nimport ElOption from 'element-ui/packages/option';\nimport ElInput from 'element-ui/packages/input';\nimport Locale from 'element-ui/src/mixins/locale';\nimport { valueEquals } from 'element-ui/src/utils/util';\n\nexport default {\n name: 'ElPagination',\n\n props: {\n pageSize: {\n type: Number,\n default: 10\n },\n\n small: Boolean,\n\n total: Number,\n\n pageCount: Number,\n\n pagerCount: {\n type: Number,\n validator(value) {\n return (value | 0) === value && value > 4 && value < 22 && (value % 2) === 1;\n },\n default: 7\n },\n\n currentPage: {\n type: Number,\n default: 1\n },\n\n layout: {\n default: 'prev, pager, next, jumper, ->, total'\n },\n\n pageSizes: {\n type: Array,\n default() {\n return [10, 20, 30, 40, 50, 100];\n }\n },\n\n popperClass: String,\n\n prevText: String,\n\n nextText: String,\n\n background: Boolean,\n\n disabled: Boolean,\n\n hideOnSinglePage: Boolean\n },\n\n data() {\n return {\n internalCurrentPage: 1,\n internalPageSize: 0,\n lastEmittedPage: -1,\n userChangePageSize: false\n };\n },\n\n render(h) {\n const layout = this.layout;\n if (!layout) return null;\n if (this.hideOnSinglePage && (!this.internalPageCount || this.internalPageCount === 1)) return null;\n\n let template =
;\n const TEMPLATE_MAP = {\n prev: ,\n jumper: ,\n pager: ,\n next: ,\n sizes: ,\n slot: { this.$slots.default ? this.$slots.default : '' },\n total: \n };\n const components = layout.split(',').map((item) => item.trim());\n const rightWrapper =
;\n let haveRightWrapper = false;\n\n template.children = template.children || [];\n rightWrapper.children = rightWrapper.children || [];\n components.forEach(compo => {\n if (compo === '->') {\n haveRightWrapper = true;\n return;\n }\n\n if (!haveRightWrapper) {\n template.children.push(TEMPLATE_MAP[compo]);\n } else {\n rightWrapper.children.push(TEMPLATE_MAP[compo]);\n }\n });\n\n if (haveRightWrapper) {\n template.children.unshift(rightWrapper);\n }\n\n return template;\n },\n\n components: {\n Prev: {\n render(h) {\n return (\n \n {\n this.$parent.prevText\n ? { this.$parent.prevText }\n : \n }\n \n );\n }\n },\n\n Next: {\n render(h) {\n return (\n \n {\n this.$parent.nextText\n ? { this.$parent.nextText }\n : \n }\n \n );\n }\n },\n\n Sizes: {\n mixins: [Locale],\n\n props: {\n pageSizes: Array\n },\n\n watch: {\n pageSizes: {\n immediate: true,\n handler(newVal, oldVal) {\n if (valueEquals(newVal, oldVal)) return;\n if (Array.isArray(newVal)) {\n this.$parent.internalPageSize = newVal.indexOf(this.$parent.pageSize) > -1\n ? this.$parent.pageSize\n : this.pageSizes[0];\n }\n }\n }\n },\n\n render(h) {\n return (\n \n \n {\n this.pageSizes.map(item =>\n \n \n )\n }\n \n \n );\n },\n\n components: {\n ElSelect,\n ElOption\n },\n\n methods: {\n handleChange(val) {\n if (val !== this.$parent.internalPageSize) {\n this.$parent.internalPageSize = val = parseInt(val, 10);\n this.$parent.userChangePageSize = true;\n this.$parent.$emit('update:pageSize', val);\n this.$parent.$emit('size-change', val);\n }\n }\n }\n },\n\n Jumper: {\n mixins: [Locale],\n\n components: { ElInput },\n\n data() {\n return {\n userInput: null\n };\n },\n\n watch: {\n '$parent.internalCurrentPage'() {\n this.userInput = null;\n }\n },\n\n methods: {\n handleKeyup({ keyCode, target }) {\n // Chrome, Safari, Firefox triggers change event on Enter\n // Hack for IE: https://github.com/ElemeFE/element/issues/11710\n // Drop this method when we no longer supports IE\n if (keyCode === 13) {\n this.handleChange(target.value);\n }\n },\n handleInput(value) {\n this.userInput = value;\n },\n handleChange(value) {\n this.$parent.internalCurrentPage = this.$parent.getValidCurrentPage(value);\n this.$parent.emitChange();\n this.userInput = null;\n }\n },\n\n render(h) {\n return (\n \n { this.t('el.pagination.goto') }\n \n { this.t('el.pagination.pageClassifier') }\n \n );\n }\n },\n\n Total: {\n mixins: [Locale],\n\n render(h) {\n return (\n typeof this.$parent.total === 'number'\n ? { this.t('el.pagination.total', { total: this.$parent.total }) }\n : ''\n );\n }\n },\n\n Pager\n },\n\n methods: {\n handleCurrentChange(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n this.userChangePageSize = true;\n this.emitChange();\n },\n\n prev() {\n if (this.disabled) return;\n const newVal = this.internalCurrentPage - 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('prev-click', this.internalCurrentPage);\n this.emitChange();\n },\n\n next() {\n if (this.disabled) return;\n const newVal = this.internalCurrentPage + 1;\n this.internalCurrentPage = this.getValidCurrentPage(newVal);\n this.$emit('next-click', this.internalCurrentPage);\n this.emitChange();\n },\n\n getValidCurrentPage(value) {\n value = parseInt(value, 10);\n\n const havePageCount = typeof this.internalPageCount === 'number';\n\n let resetValue;\n if (!havePageCount) {\n if (isNaN(value) || value < 1) resetValue = 1;\n } else {\n if (value < 1) {\n resetValue = 1;\n } else if (value > this.internalPageCount) {\n resetValue = this.internalPageCount;\n }\n }\n\n if (resetValue === undefined && isNaN(value)) {\n resetValue = 1;\n } else if (resetValue === 0) {\n resetValue = 1;\n }\n\n return resetValue === undefined ? value : resetValue;\n },\n\n emitChange() {\n this.$nextTick(() => {\n if (this.internalCurrentPage !== this.lastEmittedPage || this.userChangePageSize) {\n this.$emit('current-change', this.internalCurrentPage);\n this.lastEmittedPage = this.internalCurrentPage;\n this.userChangePageSize = false;\n }\n });\n }\n },\n\n computed: {\n internalPageCount() {\n if (typeof this.total === 'number') {\n return Math.max(1, Math.ceil(this.total / this.internalPageSize));\n } else if (typeof this.pageCount === 'number') {\n return Math.max(1, this.pageCount);\n }\n return null;\n }\n },\n\n watch: {\n currentPage: {\n immediate: true,\n handler(val) {\n this.internalCurrentPage = this.getValidCurrentPage(val);\n }\n },\n\n pageSize: {\n immediate: true,\n handler(val) {\n this.internalPageSize = isNaN(val) ? 10 : val;\n }\n },\n\n internalCurrentPage: {\n immediate: true,\n handler(newVal) {\n this.$emit('update:currentPage', newVal);\n this.lastEmittedPage = -1;\n }\n },\n\n internalPageCount(newVal) {\n /* istanbul ignore if */\n const oldPage = this.internalCurrentPage;\n if (newVal > 0 && oldPage === 0) {\n this.internalCurrentPage = 1;\n } else if (oldPage > newVal) {\n this.internalCurrentPage = newVal === 0 ? 1 : newVal;\n this.userChangePageSize && this.emitChange();\n }\n this.userChangePageSize = false;\n }\n }\n};\n","import Pagination from './src/pagination';\n\n/* istanbul ignore next */\nPagination.install = function(Vue) {\n Vue.component(Pagination.name, Pagination);\n};\n\nexport default Pagination;\n","import 'element/css/pagination.scss'\n\nimport Pagination from 'element-ui/packages/pagination'\n\nexport default Pagination\n","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreatorsPerformance.vue?vue&type=style&index=0&id=128c5bee&prod&lang=scss&scoped=true&\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreativeStats.vue?vue&type=style&index=0&id=3b26d312&prod&lang=scss&scoped=true&\"","// RegExp (BA|BL|T|C)-(CMP|GRP|CRV)-((V|P|C|L)-)*(\\d+)\n\nexport enum Types {\n BA = 'brand_awareness',\n PF = 'performance',\n VOD = 'preroll',\n}\n\nexport enum Kinds {\n CMP = 'campaign',\n GRP = 'group',\n CRV = 'creative',\n}\n\nexport enum Formats {\n V = 'video',\n L = 'leaderboard',\n P = 'pip_video',\n C = 'custom',\n YFS = 'yandex_fs',\n YT = 'yandex_text',\n}\n\ninterface ParsedSlug {\n kind: Kinds\n type: Types\n format: Formats\n}\n\ntype SplittedSlug = [\n keyof typeof Types,\n keyof typeof Kinds,\n keyof typeof Formats\n]\n\nexport default (slug: string): ParsedSlug => {\n if (typeof slug !== 'string') {\n throw new Error('Slug is not string')\n }\n\n const [type, kind, format]: SplittedSlug = slug.split('-') as SplittedSlug\n\n return {\n kind: Kinds[kind],\n type: Types[type],\n format: Formats[format],\n }\n}\n","import e from\"vue\";function t(e,t){for(var n=0;n=0||(i[n]=e[n]);return i}function u(e){return 1==(null!=(t=e)&&\"object\"==typeof t&&!1===Array.isArray(t))&&\"[object Object]\"===Object.prototype.toString.call(e);var t}var a=Object.prototype,f=a.toString,c=a.hasOwnProperty,l=/^\\s*function (\\w+)/;function s(e){var t,n=null!==(t=null==e?void 0:e.type)&&void 0!==t?t:e;if(n){var r=n.toString().match(l);return r?r[1]:\"\"}return\"\"}var v=function(e){var t,n;return!1!==u(e)&&\"function\"==typeof(t=e.constructor)&&!1!==u(n=t.prototype)&&!1!==n.hasOwnProperty(\"isPrototypeOf\")},y=function(e){return e},p=y;if(\"production\"!==process.env.NODE_ENV){var d=\"undefined\"!=typeof console;p=d?function(t){!1===e.config.silent&&console.warn(\"[VueTypes warn]: \"+t)}:y}var h=function(e,t){return c.call(e,t)},b=Number.isInteger||function(e){return\"number\"==typeof e&&isFinite(e)&&Math.floor(e)===e},g=Array.isArray||function(e){return\"[object Array]\"===f.call(e)},O=function(e){return\"[object Function]\"===f.call(e)},m=function(e){return v(e)&&h(e,\"_vueTypes_name\")},j=function(e){return v(e)&&(h(e,\"type\")||[\"_vueTypes_name\",\"validator\",\"default\",\"required\"].some(function(t){return h(e,t)}))};function _(e,t){return Object.defineProperty(e.bind(t),\"__original\",{value:e})}function T(e,t,n){var r;void 0===n&&(n=!1);var i=!0,o=\"\";r=v(e)?e:{type:e};var u=m(r)?r._vueTypes_name+\" - \":\"\";if(j(r)&&null!==r.type){if(void 0===r.type)return i;if(!r.required&&void 0===t)return i;void 0===r.type?o=\"any\":g(r.type)?(i=r.type.some(function(e){return!0===T(e,t,!0)}),o=r.type.map(function(e){return s(e)}).join(\" or \")):i=\"Array\"===(o=s(r))?g(t):\"Object\"===o?v(t):\"String\"===o||\"Number\"===o||\"Boolean\"===o||\"Function\"===o?function(e){if(null==e)return\"\";var t=e.constructor.toString().match(l);return t?t[1]:\"\"}(t)===o:t instanceof r.type}if(!i){var a=u+'value \"'+t+'\" should be of type \"'+o+'\"';return!1===n?(p(a),!1):a}if(h(r,\"validator\")&&O(r.validator)){var f=p,c=[];if(p=function(e){c.push(e)},i=r.validator(t),p=f,!i){var y=(c.length>1?\"* \":\"\")+c.join(\"\\n* \");return c.length=0,!1===n?(p(y),i):y}}return i}function w(e,t){var n=Object.defineProperties(t,{_vueTypes_name:{value:e,writable:!0},isRequired:{get:function(){return this.required=!0,this}},def:{value:function(e){return void 0===e?(h(this,\"default\")&&delete this.default,this):O(e)||!0===T(this,e,!0)?(this.default=g(e)?function(){return[].concat(e)}:v(e)?function(){return Object.assign({},e)}:e,this):(p(this._vueTypes_name+' - invalid default value: \"'+e+'\"'),this)}}}),r=n.validator;return O(r)&&(n.validator=_(r,n)),n}function k(e,t){var n=w(e,t);return Object.defineProperty(n,\"validate\",{value:function(e){return O(this.validator)&&p(this._vueTypes_name+\" - calling .validate() will overwrite the current custom validator function. Validator info:\\n\"+JSON.stringify(this)),this.validator=_(e,this),this}})}function P(e,t,n){var r,i,u=(r=t,i={},Object.getOwnPropertyNames(r).forEach(function(e){i[e]=Object.getOwnPropertyDescriptor(r,e)}),Object.defineProperties({},i));if(u._vueTypes_name=e,!v(n))return u;var a,f,c=n.validator,l=o(n,[\"validator\"]);if(O(c)){var s=u.validator;s&&(s=null!==(f=(a=s).__original)&&void 0!==f?f:a),u.validator=_(s?function(e){return s.call(this,e)&&c.call(this,e)}:c,u)}return Object.assign(u,l)}function x(e){return e.replace(/^(?!\\s*$)/gm,\" \")}var A=function(){return k(\"any\",{})},E=function(){return k(\"function\",{type:Function})},N=function(){return k(\"boolean\",{type:Boolean})},q=function(){return k(\"string\",{type:String})},S=function(){return k(\"number\",{type:Number})},V=function(){return k(\"array\",{type:Array})},F=function(){return k(\"object\",{type:Object})},D=function(){return w(\"integer\",{type:Number,validator:function(e){return b(e)}})},L=function(){return w(\"symbol\",{validator:function(e){return\"symbol\"==typeof e}})};function Y(e,t){if(void 0===t&&(t=\"custom validation failed\"),\"function\"!=typeof e)throw new TypeError(\"[VueTypes error]: You must provide a function as argument\");return w(e.name||\"<>\",{validator:function(n){var r=e(n);return r||p(this._vueTypes_name+\" - \"+t),r}})}function B(e){if(!g(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument.\");var t='oneOf - value should be one of \"'+e.join('\", \"')+'\".',n=e.reduce(function(e,t){if(null!=t){var n=t.constructor;-1===e.indexOf(n)&&e.push(n)}return e},[]);return w(\"oneOf\",{type:n.length>0?n:void 0,validator:function(n){var r=-1!==e.indexOf(n);return r||p(t),r}})}function I(e){if(!g(e))throw new TypeError(\"[VueTypes error]: You must provide an array as argument\");for(var t=!1,n=[],r=0;r0&&n.some(function(e){return-1===o.indexOf(e)})){var u=n.filter(function(e){return-1===o.indexOf(e)});return p(1===u.length?'shape - required property \"'+u[0]+'\" is not defined.':'shape - required properties \"'+u.join('\", \"')+'\" are not defined.'),!1}return o.every(function(n){if(-1===t.indexOf(n))return!0===i._vueTypes_isLoose||(p('shape - shape definition does not include a \"'+n+'\" property. Allowed keys: \"'+t.join('\", \"')+'\".'),!1);var o=T(e[n],r[n],!0);return\"string\"==typeof o&&p('shape - \"'+n+'\" property validation error:\\n '+x(o)),!0===o})}});return Object.defineProperty(r,\"_vueTypes_isLoose\",{writable:!0,value:!1}),Object.defineProperty(r,\"loose\",{get:function(){return this._vueTypes_isLoose=!0,this}}),r}var z=function(){function e(){}return e.extend=function(e){var t=this;if(g(e))return e.forEach(function(e){return t.extend(e)}),this;var n=e.name,r=e.validate,i=void 0!==r&&r,u=e.getter,a=void 0!==u&&u,f=o(e,[\"name\",\"validate\",\"getter\"]);if(h(this,n))throw new TypeError('[VueTypes error]: Type \"'+n+'\" already defined');var c,l=f.type;return m(l)?(delete f.type,Object.defineProperty(this,n,a?{get:function(){return P(n,l,f)}}:{value:function(){var e,t=P(n,l,f);return t.validator&&(t.validator=(e=t.validator).bind.apply(e,[t].concat([].slice.call(arguments)))),t}})):(c=a?{get:function(){var e=Object.assign({},f);return i?k(n,e):w(n,e)},enumerable:!0}:{value:function(){var e,t,r=Object.assign({},f);return e=i?k(n,r):w(n,r),r.validator&&(e.validator=(t=r.validator).bind.apply(t,[e].concat([].slice.call(arguments)))),e},enumerable:!0},Object.defineProperty(this,n,c))},n(e,null,[{key:\"any\",get:function(){return A()}},{key:\"func\",get:function(){return E().def(this.defaults.func)}},{key:\"bool\",get:function(){return N().def(this.defaults.bool)}},{key:\"string\",get:function(){return q().def(this.defaults.string)}},{key:\"number\",get:function(){return S().def(this.defaults.number)}},{key:\"array\",get:function(){return V().def(this.defaults.array)}},{key:\"object\",get:function(){return F().def(this.defaults.object)}},{key:\"integer\",get:function(){return D().def(this.defaults.integer)}},{key:\"symbol\",get:function(){return L()}}]),e}();function C(e){var t;return void 0===e&&(e={func:function(){},bool:!0,string:\"\",number:0,array:function(){return[]},object:function(){return{}},integer:0}),(t=function(t){function o(){return t.apply(this,arguments)||this}return i(o,t),n(o,null,[{key:\"sensibleDefaults\",get:function(){return r({},this.defaults)},set:function(t){this.defaults=!1!==t?r({},!0!==t?t:e):{}}}]),o}(z)).defaults=r({},e),t}z.defaults={},z.custom=Y,z.oneOf=B,z.instanceOf=M,z.oneOfType=I,z.arrayOf=J,z.objectOf=R,z.shape=$,z.utils={validate:function(e,t){return!0===T(t,e,!0)},toType:function(e,t,n){return void 0===n&&(n=!1),n?k(e,t):w(e,t)}};var G=function(e){function t(){return e.apply(this,arguments)||this}return i(t,e),t}(C());export default G;export{A as any,V as array,J as arrayOf,N as bool,C as createTypes,Y as custom,P as fromType,E as func,M as instanceOf,D as integer,S as number,F as object,R as objectOf,B as oneOf,I as oneOfType,$ as shape,q as string,L as symbol,w as toType,k as toValidableType,T as validateType};\n//# sourceMappingURL=vue-types.m.js.map\n","import { ReverseMap } from 'lib/types/base-types'\n\nexport enum Campaign {\n BRAND_AWARENESS = 'brand_awareness',\n PERFORMANCE = 'performance',\n YANDEX_FS = 'yandex_fs',\n PREROLL = 'preroll',\n BRAND_LIFT = 'brand_lift',\n TASK = 'task',\n}\n\nexport interface ICampaignType {\n id: Campaign\n title: string\n description: string\n icon: 'speaker' | 'list' | 'task-checked' | 'dialog-bubbles'\n disabled?: boolean\n}\n\nexport type CampaignType = ReverseMap\n","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Top5.vue?vue&type=style&index=0&id=ff16e916&prod&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonIndicatorsCard.vue?vue&type=style&index=0&id=3d206bf4&prod&lang=scss&scoped=true&\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAAXNSR0IArs4c6QAAAO1QTFRFAAAAn8//n7//p8f/p7//qsX/p8P/psb/psL/qcf/p8X/p8L/qMb/psb/qMT/psT/qcf/qcX/p8X/p8P/qcb/qMX/qMP/qMf/qMX/p8T/qMb/qMX/p8X/p8T/qMb/qMT/qMX/qMT/p8X/p8T/qMb/qMX/qcX/qcT/qMX/oMD/mLv/mLr/j7X/h7D/gKv/f6v/eKX/d6X/d6X+b6D/b5//b5/+Z5r/Z5r+X5X/X5X+X5T+V4//V4/+Vo//Vo/+T4r+T4n/Ton/Ton+RoT/RoT+P4D+PoD+P3/+Pn//Pn/+N3r+Nnr/Nnr+LnT+Jm/+GBSPGwAAACh0Uk5TABAQICAwQFBQX2Bgb3BwcH9/gICPkJCfn6Cvr7Cwv7/Pz9DQ39/v7/7nHyQAAASdSURBVHja7dvRVttGEAbgQYoVB9qahogY0wjTeuVfgAC3VNgQaBOcFoO17/845aShc8CSPatdoZt+LzDjmdHYqz2mSvx2J3wfKYWvVD/qhZ2gRS/C3wj7QxQaRmH7FdXJC0KFFfrdgGoSvB9CZNhtk3OtzSEMqK7bXgQRjEVBQ+GZWncYvrEUXkWw0rObBW8T1jY9i+orOKACqsZ7B0feVeu+gjOqwiS8GcKh+Hsy9A6ObZIJbxfO9TyD9v8C1sAg8Pg1kAHHbyADjt9MBhy/yQw8hVr1PVpuFzXr0VI/wob9F8N3MJCefZ7nWuezz1kKA2+WDOAQUsl5rjWbXx9AKi4fRCUOP9EL5Ckoz/YL6PdcF5iPLMcggNBEl7iAUGCzAZKpLjVLpE2weAK/6CWmkHlLC16Z1d+2C4tPQg8ip3qFM4hE9Mw6RA7v9Ap5Um0OFUQ+ambXhKhaAbSAtASOC8CyCiUIIHOnBXKYlyCCSKpFUohE5jsg0yJnkGnRox3I/KFF/jRehwoyf2mROWRi+qYNoVyL5BAKDDsALQShLv0rbiqB2OMl0EgLEHAH7PcQ+xtSIdGDPtDMYwgo3kIiZ1okg5jPD6HTVSy2QUTbkMvd7SEegghymRa4glyft4BIogUOIBcTtWBi7KYAzKcAJpJ85QQcwMRr6sDIb3qFEYx0aBtw2YQxzIT0AYameokvMNSlCIaSmS51k8BQRH0YG1vXnylSMHd6pwvkZzCnCFUcXuoF4wRVEFAxhSdVyLME1RAqS7NPt7nW+f2nsxSVEZz4P4HqSKFRqukE+hShURHtoFE/0TYaFVIHjepQG40KyEejWkQxGhTz2dRIcjTKrqfzea4f5PPZ9Do7OUIFER/NxJLRZKYLza5HB2DSo9kGDKTnM73UbJKaHQvIYAqT87kWmE/kdfANXtKlUy02PRGfTaVDcDrTYvIrtK70JdXxnWaOUuCXVF5sUXyrc2oselGZTHRl1weCDqzoQSquvnkfXtM3sfOPzy4SlBnQoy0UEVyS2U1Clx61UOzXXDuQn6CYv+rK5lw7co4i0apLq4l25rx8CZSX4KN26Lp4BFkgiO84g3V6IpLHt8+AC8CCmuaPXRQWgEWC+A4ncZee88GOdS1GhTugYB0e5roW+UHBnSXzBi+XwGCNWMEcjnQtjot3ENvGo0zXIMOjkFhxEzCuM/6AyvhxfYvoEo9in0qtgzOoKz46tMS2IAPL+G9pqR7qmMTxwgos5fXdZ8DzxxugnD/Af07c/CQbgeP7RNIM3P8o5fjyDJKxdfsTg/icATu1O5ikKIkvz+Dw0s3Hx88+iXk9F8eTmxRgu2tkYguw7MP8GAALydAPsVUKtyMALF4nZjQI7OSmUvF5/Mxt46nDsagM91mCp8I1qiYY4Jl0fLui9FmKZwYBVeZtYcHh6eVtSfDxKMGCrTWy4X9AkaOT7Orm9j7XD/L7+5urbHSUoMCeT7bWB6hsLyBmk0JD4Vmw11B45u8MYCDeapFz7Z1YGL3GP1/v7GMFFQZrVCe/He7FKBTvhxs+vYhW0Al39/YVvlJqrxt22tVi/wOhNSgVE8N6DgAAAABJRU5ErkJggg==\"","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignPerformance.vue?vue&type=style&index=0&id=e6d4e0ea&prod&lang=scss&scoped=true&\"","import isNull from 'lodash/isNull'\nimport VueTypes from 'vue-types'\n\nVueTypes.extend({\n name: 'nullType',\n getter: true,\n validator: isNull,\n})\n","import './nullType'\n\nimport VueTypes from 'vue-types'\n\nVueTypes.sensibleDefaults = {\n ...VueTypes.sensibleDefaults,\n bool: false,\n}\n\nexport default VueTypes\n","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignPerformanceBarChart.vue?vue&type=style&index=0&id=ed5c2c42&prod&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonIndicators.vue?vue&type=style&index=0&id=a74fe9d2&prod&lang=scss&scoped=true&\"","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Top5Card.vue?vue&type=style&index=0&id=4ed5c1fc&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.ranged)?_c('el-input',_vm._b({directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.handleClose),expression:\"handleClose\"}],ref:\"reference\",staticClass:\"el-date-editor\",class:'el-date-editor--' + _vm.type,attrs:{\"readonly\":!_vm.editable || _vm.readonly || _vm.type === 'dates' || _vm.type === 'week' || _vm.type === 'years' || _vm.type === 'months',\"disabled\":_vm.pickerDisabled,\"size\":_vm.pickerSize,\"name\":_vm.name,\"placeholder\":_vm.placeholder,\"value\":_vm.displayValue,\"validateEvent\":false},on:{\"focus\":_vm.handleFocus,\"input\":value => _vm.userInput = value,\"change\":_vm.handleChange},nativeOn:{\"keydown\":function($event){return _vm.handleKeydown.apply(null, arguments)},\"mouseenter\":function($event){return _vm.handleMouseEnter.apply(null, arguments)},\"mouseleave\":function($event){_vm.showClose = false}}},'el-input',_vm.firstInputId,false),[_c('i',{staticClass:\"el-input__icon\",class:_vm.triggerClass,attrs:{\"slot\":\"prefix\"},on:{\"click\":_vm.handleFocus},slot:\"prefix\"}),(_vm.haveTrigger)?_c('i',{staticClass:\"el-input__icon\",class:[_vm.showClose ? '' + _vm.clearIcon : ''],attrs:{\"slot\":\"suffix\"},on:{\"click\":_vm.handleClickIcon},slot:\"suffix\"}):_vm._e()]):_c('div',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.handleClose),expression:\"handleClose\"}],ref:\"reference\",staticClass:\"el-date-editor el-range-editor el-input__inner\",class:[\n 'el-date-editor--' + _vm.type,\n _vm.pickerSize ? `el-range-editor--${ _vm.pickerSize }` : '',\n _vm.pickerDisabled ? 'is-disabled' : '',\n _vm.pickerVisible ? 'is-active' : ''\n ],on:{\"click\":_vm.handleRangeClick,\"mouseenter\":_vm.handleMouseEnter,\"mouseleave\":function($event){_vm.showClose = false},\"keydown\":_vm.handleKeydown}},[_c('i',{class:['el-input__icon', 'el-range__icon', _vm.triggerClass]}),_c('input',_vm._b({staticClass:\"el-range-input\",attrs:{\"autocomplete\":\"off\",\"placeholder\":_vm.startPlaceholder,\"disabled\":_vm.pickerDisabled,\"readonly\":!_vm.editable || _vm.readonly,\"name\":_vm.name && _vm.name[0]},domProps:{\"value\":_vm.displayValue && _vm.displayValue[0]},on:{\"input\":_vm.handleStartInput,\"change\":_vm.handleStartChange,\"focus\":_vm.handleFocus}},'input',_vm.firstInputId,false)),_vm._t(\"range-separator\",function(){return [_c('span',{staticClass:\"el-range-separator\"},[_vm._v(_vm._s(_vm.rangeSeparator))])]}),_c('input',_vm._b({staticClass:\"el-range-input\",attrs:{\"autocomplete\":\"off\",\"placeholder\":_vm.endPlaceholder,\"disabled\":_vm.pickerDisabled,\"readonly\":!_vm.editable || _vm.readonly,\"name\":_vm.name && _vm.name[1]},domProps:{\"value\":_vm.displayValue && _vm.displayValue[1]},on:{\"input\":_vm.handleEndInput,\"change\":_vm.handleEndChange,\"focus\":_vm.handleFocus}},'input',_vm.secondInputId,false)),(_vm.haveTrigger)?_c('i',{staticClass:\"el-input__icon el-range__close-icon\",class:[_vm.showClose ? '' + _vm.clearIcon : ''],on:{\"click\":_vm.handleClickIcon}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import fecha from 'element-ui/src/utils/date';\nimport { t } from 'element-ui/src/locale';\n\nconst weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nconst months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];\n\nconst newArray = function(start, end) {\n let result = [];\n for (let i = start; i <= end; i++) {\n result.push(i);\n }\n return result;\n};\n\nexport const getI18nSettings = () => {\n return {\n dayNamesShort: weeks.map(week => t(`el.datepicker.weeks.${ week }`)),\n dayNames: weeks.map(week => t(`el.datepicker.weeks.${ week }`)),\n monthNamesShort: months.map(month => t(`el.datepicker.months.${ month }`)),\n monthNames: months.map((month, index) => t(`el.datepicker.month${ index + 1 }`)),\n amPm: ['am', 'pm']\n };\n};\n\nexport const toDate = function(date) {\n return isDate(date) ? new Date(date) : null;\n};\n\nexport const isDate = function(date) {\n if (date === null || date === undefined) return false;\n if (isNaN(new Date(date).getTime())) return false;\n if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`\n return true;\n};\n\nexport const isDateObject = function(val) {\n return val instanceof Date;\n};\n\nexport const formatDate = function(date, format) {\n date = toDate(date);\n if (!date) return '';\n return fecha.format(date, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nexport const parseDate = function(string, format) {\n return fecha.parse(string, format || 'yyyy-MM-dd', getI18nSettings());\n};\n\nexport const getDayCountOfMonth = function(year, month) {\n if (isNaN(+month)) return 31;\n\n return new Date(year, +month + 1, 0).getDate();\n};\n\nexport const getDayCountOfYear = function(year) {\n const isLeapYear = year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);\n return isLeapYear ? 366 : 365;\n};\n\nexport const getFirstDayOfMonth = function(date) {\n const temp = new Date(date.getTime());\n temp.setDate(1);\n return temp.getDay();\n};\n\n// see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript\n// {prev, next} Date should work for Daylight Saving Time\n// Adding 24 * 60 * 60 * 1000 does not work in the above scenario\nexport const prevDate = function(date, amount = 1) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);\n};\n\nexport const nextDate = function(date, amount = 1) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);\n};\n\nexport const getStartDateOfMonth = function(year, month) {\n const result = new Date(year, month, 1);\n const day = result.getDay();\n\n if (day === 0) {\n return prevDate(result, 7);\n } else {\n return prevDate(result, day);\n }\n};\n\nexport const getWeekNumber = function(src) {\n if (!isDate(src)) return null;\n const date = new Date(src.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);\n // January 4 is always in week 1.\n const week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week 1.\n // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.\n return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + (week1.getDay() + 6) % 7) / 7);\n};\n\nexport const getRangeHours = function(ranges) {\n const hours = [];\n let disabledHours = [];\n\n (ranges || []).forEach(range => {\n const value = range.map(date => date.getHours());\n\n disabledHours = disabledHours.concat(newArray(value[0], value[1]));\n });\n\n if (disabledHours.length) {\n for (let i = 0; i < 24; i++) {\n hours[i] = disabledHours.indexOf(i) === -1;\n }\n } else {\n for (let i = 0; i < 24; i++) {\n hours[i] = false;\n }\n }\n\n return hours;\n};\n\nexport const getPrevMonthLastDays = (date, amount) => {\n if (amount <= 0) return [];\n const temp = new Date(date.getTime());\n temp.setDate(0);\n const lastDay = temp.getDate();\n return range(amount).map((_, index) => lastDay - (amount - index - 1));\n};\n\nexport const getMonthDays = (date) => {\n const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n const days = temp.getDate();\n return range(days).map((_, index) => index + 1);\n};\n\nfunction setRangeData(arr, start, end, value) {\n for (let i = start; i < end; i++) {\n arr[i] = value;\n }\n}\n\nexport const getRangeMinutes = function(ranges, hour) {\n const minutes = new Array(60);\n\n if (ranges.length > 0) {\n ranges.forEach(range => {\n const start = range[0];\n const end = range[1];\n const startHour = start.getHours();\n const startMinute = start.getMinutes();\n const endHour = end.getHours();\n const endMinute = end.getMinutes();\n if (startHour === hour && endHour !== hour) {\n setRangeData(minutes, startMinute, 60, true);\n } else if (startHour === hour && endHour === hour) {\n setRangeData(minutes, startMinute, endMinute + 1, true);\n } else if (startHour !== hour && endHour === hour) {\n setRangeData(minutes, 0, endMinute + 1, true);\n } else if (startHour < hour && endHour > hour) {\n setRangeData(minutes, 0, 60, true);\n }\n });\n } else {\n setRangeData(minutes, 0, 60, true);\n }\n return minutes;\n};\n\nexport const range = function(n) {\n // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n\n return Array.apply(null, {length: n}).map((_, n) => n);\n};\n\nexport const modifyDate = function(date, y, m, d) {\n return new Date(y, m, d, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n\nexport const modifyTime = function(date, h, m, s) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), h, m, s, date.getMilliseconds());\n};\n\nexport const modifyWithTimeString = (date, time) => {\n if (date == null || !time) {\n return date;\n }\n time = parseDate(time, 'HH:mm:ss');\n return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());\n};\n\nexport const clearTime = function(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n};\n\nexport const clearMilliseconds = function(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0);\n};\n\nexport const limitTimeRange = function(date, ranges, format = 'HH:mm:ss') {\n // TODO: refactory a more elegant solution\n if (ranges.length === 0) return date;\n const normalizeDate = date => fecha.parse(fecha.format(date, format), format);\n const ndate = normalizeDate(date);\n const nranges = ranges.map(range => range.map(normalizeDate));\n if (nranges.some(nrange => ndate >= nrange[0] && ndate <= nrange[1])) return date;\n\n let minDate = nranges[0][0];\n let maxDate = nranges[0][0];\n\n nranges.forEach(nrange => {\n minDate = new Date(Math.min(nrange[0], minDate));\n maxDate = new Date(Math.max(nrange[1], minDate));\n });\n\n const ret = ndate < minDate ? minDate : maxDate;\n // preserve Year/Month/Date\n return modifyDate(\n ret,\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n};\n\nexport const timeWithinRange = function(date, selectableRange, format) {\n const limitedDate = limitTimeRange(date, selectableRange, format);\n return limitedDate.getTime() === date.getTime();\n};\n\nexport const changeYearMonthAndClampDate = function(date, year, month) {\n // clamp date to the number of days in `year`, `month`\n // eg: (2010-1-31, 2010, 2) => 2010-2-28\n const monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));\n return modifyDate(date, year, month, monthDate);\n};\n\nexport const prevMonth = function(date) {\n const year = date.getFullYear();\n const month = date.getMonth();\n return month === 0\n ? changeYearMonthAndClampDate(date, year - 1, 11)\n : changeYearMonthAndClampDate(date, year, month - 1);\n};\n\nexport const nextMonth = function(date) {\n const year = date.getFullYear();\n const month = date.getMonth();\n return month === 11\n ? changeYearMonthAndClampDate(date, year + 1, 0)\n : changeYearMonthAndClampDate(date, year, month + 1);\n};\n\nexport const prevYear = function(date, amount = 1) {\n const year = date.getFullYear();\n const month = date.getMonth();\n return changeYearMonthAndClampDate(date, year - amount, month);\n};\n\nexport const nextYear = function(date, amount = 1) {\n const year = date.getFullYear();\n const month = date.getMonth();\n return changeYearMonthAndClampDate(date, year + amount, month);\n};\n\nexport const extractDateFormat = function(format) {\n return format\n .replace(/\\W?m{1,2}|\\W?ZZ/g, '')\n .replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, '')\n .trim();\n};\n\nexport const extractTimeFormat = function(format) {\n return format\n .replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?y{2,4}/g, '')\n .trim();\n};\n\nexport const validateRangeInOneMonth = function(start, end) {\n return (start.getMonth() === end.getMonth()) && (start.getFullYear() === end.getFullYear());\n};\n","\n\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./picker.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./picker.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./picker.vue?vue&type=template&id=3ed9d78d&\"\nimport script from \"./picker.vue?vue&type=script&lang=js&\"\nexport * from \"./picker.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"el-zoom-in-top\"},on:{\"after-enter\":_vm.handleEnter,\"after-leave\":_vm.handleLeave}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"el-picker-panel el-date-picker el-popper\",class:[{\n 'has-sidebar': _vm.$slots.sidebar || _vm.shortcuts,\n 'has-time': _vm.showTime\n }, _vm.popperClass]},[_c('div',{staticClass:\"el-picker-panel__body-wrapper\"},[_vm._t(\"sidebar\"),(_vm.shortcuts)?_c('div',{staticClass:\"el-picker-panel__sidebar\"},_vm._l((_vm.shortcuts),function(shortcut,key){return _c('button',{key:key,staticClass:\"el-picker-panel__shortcut\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleShortcutClick(shortcut)}}},[_vm._v(_vm._s(shortcut.text))])}),0):_vm._e(),_c('div',{staticClass:\"el-picker-panel__body\"},[(_vm.showTime)?_c('div',{staticClass:\"el-date-picker__time-header\"},[_c('span',{staticClass:\"el-date-picker__editor-wrap\"},[_c('el-input',{attrs:{\"placeholder\":_vm.t('el.datepicker.selectDate'),\"value\":_vm.visibleDate,\"size\":\"small\"},on:{\"input\":val => _vm.userInputDate = val,\"change\":_vm.handleVisibleDateChange}})],1),_c('span',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.handleTimePickClose),expression:\"handleTimePickClose\"}],staticClass:\"el-date-picker__editor-wrap\"},[_c('el-input',{ref:\"input\",attrs:{\"placeholder\":_vm.t('el.datepicker.selectTime'),\"value\":_vm.visibleTime,\"size\":\"small\"},on:{\"focus\":function($event){_vm.timePickerVisible = true},\"input\":val => _vm.userInputTime = val,\"change\":_vm.handleVisibleTimeChange}}),_c('time-picker',{ref:\"timepicker\",attrs:{\"time-arrow-control\":_vm.arrowControl,\"visible\":_vm.timePickerVisible},on:{\"pick\":_vm.handleTimePick,\"mounted\":_vm.proxyTimePickerDataProperties}})],1)]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentView !== 'time'),expression:\"currentView !== 'time'\"}],staticClass:\"el-date-picker__header\",class:{ 'el-date-picker__header--bordered': _vm.currentView === 'year' || _vm.currentView === 'month' }},[_c('button',{staticClass:\"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-d-arrow-left\",attrs:{\"type\":\"button\",\"aria-label\":_vm.t(`el.datepicker.prevYear`)},on:{\"click\":_vm.prevYear}}),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentView === 'date'),expression:\"currentView === 'date'\"}],staticClass:\"el-picker-panel__icon-btn el-date-picker__prev-btn el-icon-arrow-left\",attrs:{\"type\":\"button\",\"aria-label\":_vm.t(`el.datepicker.prevMonth`)},on:{\"click\":_vm.prevMonth}}),_c('span',{staticClass:\"el-date-picker__header-label\",attrs:{\"role\":\"button\"},on:{\"click\":_vm.showYearPicker}},[_vm._v(_vm._s(_vm.yearLabel))]),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentView === 'date'),expression:\"currentView === 'date'\"}],staticClass:\"el-date-picker__header-label\",class:{ active: _vm.currentView === 'month' },attrs:{\"role\":\"button\"},on:{\"click\":_vm.showMonthPicker}},[_vm._v(_vm._s(_vm.t(`el.datepicker.month${ _vm.month + 1 }`)))]),_c('button',{staticClass:\"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-d-arrow-right\",attrs:{\"type\":\"button\",\"aria-label\":_vm.t(`el.datepicker.nextYear`)},on:{\"click\":_vm.nextYear}}),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentView === 'date'),expression:\"currentView === 'date'\"}],staticClass:\"el-picker-panel__icon-btn el-date-picker__next-btn el-icon-arrow-right\",attrs:{\"type\":\"button\",\"aria-label\":_vm.t(`el.datepicker.nextMonth`)},on:{\"click\":_vm.nextMonth}})]),_c('div',{staticClass:\"el-picker-panel__content\"},[_c('date-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentView === 'date'),expression:\"currentView === 'date'\"}],attrs:{\"selection-mode\":_vm.selectionMode,\"first-day-of-week\":_vm.firstDayOfWeek,\"value\":_vm.value,\"default-value\":_vm.defaultValue ? new Date(_vm.defaultValue) : null,\"date\":_vm.date,\"cell-class-name\":_vm.cellClassName,\"disabled-date\":_vm.disabledDate},on:{\"pick\":_vm.handleDatePick}}),_c('year-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentView === 'year'),expression:\"currentView === 'year'\"}],attrs:{\"selection-mode\":_vm.selectionMode,\"value\":_vm.value,\"default-value\":_vm.defaultValue ? new Date(_vm.defaultValue) : null,\"date\":_vm.date,\"disabled-date\":_vm.disabledDate},on:{\"pick\":_vm.handleYearPick}}),_c('month-table',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.currentView === 'month'),expression:\"currentView === 'month'\"}],attrs:{\"selection-mode\":_vm.selectionMode,\"value\":_vm.value,\"default-value\":_vm.defaultValue ? new Date(_vm.defaultValue) : null,\"date\":_vm.date,\"disabled-date\":_vm.disabledDate},on:{\"pick\":_vm.handleMonthPick}})],1)])],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.footerVisible && (_vm.currentView === 'date' || _vm.currentView === 'month' || _vm.currentView === 'year')),expression:\"footerVisible && (currentView === 'date' || currentView === 'month' || currentView === 'year')\"}],staticClass:\"el-picker-panel__footer\"},[_c('el-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectionMode !== 'dates' && _vm.selectionMode !== 'months' && _vm.selectionMode !== 'years'),expression:\"selectionMode !== 'dates' && selectionMode !== 'months' && selectionMode !== 'years'\"}],staticClass:\"el-picker-panel__link-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":_vm.changeToNow}},[_vm._v(\" \"+_vm._s(_vm.t('el.datepicker.now'))+\" \")]),_c('el-button',{staticClass:\"el-picker-panel__link-btn\",attrs:{\"plain\":\"\",\"size\":\"mini\"},on:{\"click\":_vm.confirm}},[_vm._v(\" \"+_vm._s(_vm.t('el.datepicker.confirm'))+\" \")])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('button',{staticClass:\"el-button\",class:[\n _vm.type ? 'el-button--' + _vm.type : '',\n _vm.buttonSize ? 'el-button--' + _vm.buttonSize : '',\n {\n 'is-disabled': _vm.buttonDisabled,\n 'is-loading': _vm.loading,\n 'is-plain': _vm.plain,\n 'is-round': _vm.round,\n 'is-circle': _vm.circle\n }\n ],attrs:{\"disabled\":_vm.buttonDisabled || _vm.loading,\"autofocus\":_vm.autofocus,\"type\":_vm.nativeType},on:{\"click\":_vm.handleClick}},[(_vm.loading)?_c('i',{staticClass:\"el-icon-loading\"}):_vm._e(),(_vm.icon && !_vm.loading)?_c('i',{class:_vm.icon}):_vm._e(),(_vm.$slots.default)?_c('span',[_vm._t(\"default\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./button.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../thread-loader/dist/cjs.js!../../../../babel-loader/lib/index.js!../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../vue-loader/lib/index.js??vue-loader-options!./button.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./button.vue?vue&type=template&id=e11e4b64&\"\nimport script from \"./button.vue?vue&type=script&lang=js&\"\nexport * from \"./button.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import ElButton from './src/button';\n\n/* istanbul ignore next */\nElButton.install = function(Vue) {\n Vue.component(ElButton.name, ElButton);\n};\n\nexport default ElButton;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"el-zoom-in-top\"},on:{\"after-leave\":function($event){return _vm.$emit('dodestroy')}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"el-time-panel el-popper\",class:_vm.popperClass},[_c('div',{staticClass:\"el-time-panel__content\",class:{ 'has-seconds': _vm.showSeconds }},[_c('time-spinner',{ref:\"spinner\",attrs:{\"arrow-control\":_vm.useArrow,\"show-seconds\":_vm.showSeconds,\"am-pm-mode\":_vm.amPmMode,\"date\":_vm.date},on:{\"change\":_vm.handleChange,\"select-range\":_vm.setSelectionRange}})],1),_c('div',{staticClass:\"el-time-panel__footer\"},[_c('button',{staticClass:\"el-time-panel__btn cancel\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.handleCancel}},[_vm._v(_vm._s(_vm.t('el.datepicker.cancel')))]),_c('button',{staticClass:\"el-time-panel__btn\",class:{confirm: !_vm.disabled},attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleConfirm()}}},[_vm._v(_vm._s(_vm.t('el.datepicker.confirm')))])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"el-time-spinner\",class:{ 'has-seconds': _vm.showSeconds }},[(!_vm.arrowControl)?[_c('el-scrollbar',{ref:\"hours\",staticClass:\"el-time-spinner__wrapper\",attrs:{\"wrap-style\":\"max-height: inherit;\",\"view-class\":\"el-time-spinner__list\",\"noresize\":\"\",\"tag\":\"ul\"},nativeOn:{\"mouseenter\":function($event){return _vm.emitSelectRange('hours')},\"mousemove\":function($event){return _vm.adjustCurrentSpinner('hours')}}},_vm._l((_vm.hoursList),function(disabled,hour){return _c('li',{key:hour,staticClass:\"el-time-spinner__item\",class:{ 'active': hour === _vm.hours, 'disabled': disabled },on:{\"click\":function($event){return _vm.handleClick('hours', { value: hour, disabled: disabled })}}},[_vm._v(_vm._s(('0' + (_vm.amPmMode ? (hour % 12 || 12) : hour )).slice(-2))+_vm._s(_vm.amPm(hour)))])}),0),_c('el-scrollbar',{ref:\"minutes\",staticClass:\"el-time-spinner__wrapper\",attrs:{\"wrap-style\":\"max-height: inherit;\",\"view-class\":\"el-time-spinner__list\",\"noresize\":\"\",\"tag\":\"ul\"},nativeOn:{\"mouseenter\":function($event){return _vm.emitSelectRange('minutes')},\"mousemove\":function($event){return _vm.adjustCurrentSpinner('minutes')}}},_vm._l((_vm.minutesList),function(enabled,key){return _c('li',{key:key,staticClass:\"el-time-spinner__item\",class:{ 'active': key === _vm.minutes, disabled: !enabled },on:{\"click\":function($event){return _vm.handleClick('minutes', { value: key, disabled: false })}}},[_vm._v(_vm._s(('0' + key).slice(-2)))])}),0),_c('el-scrollbar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSeconds),expression:\"showSeconds\"}],ref:\"seconds\",staticClass:\"el-time-spinner__wrapper\",attrs:{\"wrap-style\":\"max-height: inherit;\",\"view-class\":\"el-time-spinner__list\",\"noresize\":\"\",\"tag\":\"ul\"},nativeOn:{\"mouseenter\":function($event){return _vm.emitSelectRange('seconds')},\"mousemove\":function($event){return _vm.adjustCurrentSpinner('seconds')}}},_vm._l((60),function(second,key){return _c('li',{key:key,staticClass:\"el-time-spinner__item\",class:{ 'active': key === _vm.seconds },on:{\"click\":function($event){return _vm.handleClick('seconds', { value: key, disabled: false })}}},[_vm._v(_vm._s(('0' + key).slice(-2)))])}),0)]:_vm._e(),(_vm.arrowControl)?[_c('div',{staticClass:\"el-time-spinner__wrapper is-arrow\",on:{\"mouseenter\":function($event){return _vm.emitSelectRange('hours')}}},[_c('i',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.decrease),expression:\"decrease\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-up\"}),_c('i',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.increase),expression:\"increase\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-down\"}),_c('ul',{ref:\"hours\",staticClass:\"el-time-spinner__list\"},_vm._l((_vm.arrowHourList),function(hour,key){return _c('li',{key:key,staticClass:\"el-time-spinner__item\",class:{ 'active': hour === _vm.hours, 'disabled': _vm.hoursList[hour] }},[_vm._v(_vm._s(hour === undefined ? '' : ('0' + (_vm.amPmMode ? (hour % 12 || 12) : hour )).slice(-2) + _vm.amPm(hour)))])}),0)]),_c('div',{staticClass:\"el-time-spinner__wrapper is-arrow\",on:{\"mouseenter\":function($event){return _vm.emitSelectRange('minutes')}}},[_c('i',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.decrease),expression:\"decrease\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-up\"}),_c('i',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.increase),expression:\"increase\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-down\"}),_c('ul',{ref:\"minutes\",staticClass:\"el-time-spinner__list\"},_vm._l((_vm.arrowMinuteList),function(minute,key){return _c('li',{key:key,staticClass:\"el-time-spinner__item\",class:{ 'active': minute === _vm.minutes }},[_vm._v(\" \"+_vm._s(minute === undefined ? '' : ('0' + minute).slice(-2))+\" \")])}),0)]),(_vm.showSeconds)?_c('div',{staticClass:\"el-time-spinner__wrapper is-arrow\",on:{\"mouseenter\":function($event){return _vm.emitSelectRange('seconds')}}},[_c('i',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.decrease),expression:\"decrease\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-up\"}),_c('i',{directives:[{name:\"repeat-click\",rawName:\"v-repeat-click\",value:(_vm.increase),expression:\"increase\"}],staticClass:\"el-time-spinner__arrow el-icon-arrow-down\"}),_c('ul',{ref:\"seconds\",staticClass:\"el-time-spinner__list\"},_vm._l((_vm.arrowSecondList),function(second,key){return _c('li',{key:key,staticClass:\"el-time-spinner__item\",class:{ 'active': second === _vm.seconds }},[_vm._v(\" \"+_vm._s(second === undefined ? '' : ('0' + second).slice(-2))+\" \")])}),0)]):_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./time-spinner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./time-spinner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./time-spinner.vue?vue&type=template&id=1d29c128&\"\nimport script from \"./time-spinner.vue?vue&type=script&lang=js&\"\nexport * from \"./time-spinner.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./time.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./time.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./time.vue?vue&type=template&id=a59a56e0&\"\nimport script from \"./time.vue?vue&type=script&lang=js&\"\nexport * from \"./time.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('table',{staticClass:\"el-year-table\",on:{\"click\":_vm.handleYearTableClick}},[_c('tbody',[_c('tr',[_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 0)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear))])]),_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 1)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 1))])]),_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 2)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 2))])]),_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 3)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 3))])])]),_c('tr',[_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 4)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 4))])]),_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 5)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 5))])]),_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 6)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 6))])]),_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 7)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 7))])])]),_c('tr',[_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 8)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 8))])]),_c('td',{staticClass:\"available\",class:_vm.getCellStyle(_vm.startYear + 9)},[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.startYear + 9))])]),_c('td'),_c('td')])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./year-table.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./year-table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./year-table.vue?vue&type=template&id=32ba1040&\"\nimport script from \"./year-table.vue?vue&type=script&lang=js&\"\nexport * from \"./year-table.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('table',{staticClass:\"el-month-table\",on:{\"click\":_vm.handleMonthTableClick,\"mousemove\":_vm.handleMouseMove}},[_c('tbody',_vm._l((_vm.rows),function(row,key){return _c('tr',{key:key},_vm._l((row),function(cell,key){return _c('td',{key:key,class:_vm.getCellStyle(cell)},[_c('div',[_c('a',{staticClass:\"cell\"},[_vm._v(_vm._s(_vm.t('el.datepicker.months.' + _vm.months[cell.text])))])])])}),0)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./month-table.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./month-table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./month-table.vue?vue&type=template&id=0bfac38e&\"\nimport script from \"./month-table.vue?vue&type=script&lang=js&\"\nexport * from \"./month-table.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('table',{staticClass:\"el-date-table\",class:{ 'is-week-mode': _vm.selectionMode === 'week' },attrs:{\"cellspacing\":\"0\",\"cellpadding\":\"0\"},on:{\"click\":_vm.handleClick,\"mousemove\":_vm.handleMouseMove}},[_c('tbody',[_c('tr',[(_vm.showWeekNumber)?_c('th',[_vm._v(_vm._s(_vm.t('el.datepicker.week')))]):_vm._e(),_vm._l((_vm.WEEKS),function(week,key){return _c('th',{key:key},[_vm._v(_vm._s(_vm.t('el.datepicker.weeks.' + week)))])})],2),_vm._l((_vm.rows),function(row,key){return _c('tr',{key:key,staticClass:\"el-date-table__row\",class:{ current: _vm.isWeekActive(row[1]) }},_vm._l((row),function(cell,key){return _c('td',{key:key,class:_vm.getCellClasses(cell)},[_c('div',[_c('span',[_vm._v(\" \"+_vm._s(cell.text)+\" \")])])])}),0)})],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./date-table.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./date-table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./date-table.vue?vue&type=template&id=181e5130&\"\nimport script from \"./date-table.vue?vue&type=script&lang=js&\"\nexport * from \"./date-table.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./date.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./date.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./date.vue?vue&type=template&id=5105c11f&\"\nimport script from \"./date.vue?vue&type=script&lang=js&\"\nexport * from \"./date.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"el-zoom-in-top\"},on:{\"after-leave\":function($event){return _vm.$emit('dodestroy')}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"el-picker-panel el-date-range-picker el-popper\",class:[{\n 'has-sidebar': _vm.$slots.sidebar || _vm.shortcuts,\n 'has-time': _vm.showTime\n }, _vm.popperClass]},[_c('div',{staticClass:\"el-picker-panel__body-wrapper\"},[_vm._t(\"sidebar\"),(_vm.shortcuts)?_c('div',{staticClass:\"el-picker-panel__sidebar\"},_vm._l((_vm.shortcuts),function(shortcut,key){return _c('button',{key:key,staticClass:\"el-picker-panel__shortcut\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleShortcutClick(shortcut)}}},[_vm._v(_vm._s(shortcut.text))])}),0):_vm._e(),_c('div',{staticClass:\"el-picker-panel__body\"},[(_vm.showTime)?_c('div',{staticClass:\"el-date-range-picker__time-header\"},[_c('span',{staticClass:\"el-date-range-picker__editors-wrap\"},[_c('span',{staticClass:\"el-date-range-picker__time-picker-wrap\"},[_c('el-input',{ref:\"minInput\",staticClass:\"el-date-range-picker__editor\",attrs:{\"size\":\"small\",\"disabled\":_vm.rangeState.selecting,\"placeholder\":_vm.t('el.datepicker.startDate'),\"value\":_vm.minVisibleDate},on:{\"input\":val => _vm.handleDateInput(val, 'min'),\"change\":val => _vm.handleDateChange(val, 'min')}})],1),_c('span',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.handleMinTimeClose),expression:\"handleMinTimeClose\"}],staticClass:\"el-date-range-picker__time-picker-wrap\"},[_c('el-input',{staticClass:\"el-date-range-picker__editor\",attrs:{\"size\":\"small\",\"disabled\":_vm.rangeState.selecting,\"placeholder\":_vm.t('el.datepicker.startTime'),\"value\":_vm.minVisibleTime},on:{\"focus\":function($event){_vm.minTimePickerVisible = true},\"input\":val => _vm.handleTimeInput(val, 'min'),\"change\":val => _vm.handleTimeChange(val, 'min')}}),_c('time-picker',{ref:\"minTimePicker\",attrs:{\"time-arrow-control\":_vm.arrowControl,\"visible\":_vm.minTimePickerVisible},on:{\"pick\":_vm.handleMinTimePick,\"mounted\":function($event){_vm.$refs.minTimePicker.format=_vm.timeFormat}}})],1)]),_c('span',{staticClass:\"el-icon-arrow-right\"}),_c('span',{staticClass:\"el-date-range-picker__editors-wrap is-right\"},[_c('span',{staticClass:\"el-date-range-picker__time-picker-wrap\"},[_c('el-input',{staticClass:\"el-date-range-picker__editor\",attrs:{\"size\":\"small\",\"disabled\":_vm.rangeState.selecting,\"placeholder\":_vm.t('el.datepicker.endDate'),\"value\":_vm.maxVisibleDate,\"readonly\":!_vm.minDate},on:{\"input\":val => _vm.handleDateInput(val, 'max'),\"change\":val => _vm.handleDateChange(val, 'max')}})],1),_c('span',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.handleMaxTimeClose),expression:\"handleMaxTimeClose\"}],staticClass:\"el-date-range-picker__time-picker-wrap\"},[_c('el-input',{staticClass:\"el-date-range-picker__editor\",attrs:{\"size\":\"small\",\"disabled\":_vm.rangeState.selecting,\"placeholder\":_vm.t('el.datepicker.endTime'),\"value\":_vm.maxVisibleTime,\"readonly\":!_vm.minDate},on:{\"focus\":function($event){_vm.minDate && (_vm.maxTimePickerVisible = true)},\"input\":val => _vm.handleTimeInput(val, 'max'),\"change\":val => _vm.handleTimeChange(val, 'max')}}),_c('time-picker',{ref:\"maxTimePicker\",attrs:{\"time-arrow-control\":_vm.arrowControl,\"visible\":_vm.maxTimePickerVisible},on:{\"pick\":_vm.handleMaxTimePick,\"mounted\":function($event){_vm.$refs.maxTimePicker.format=_vm.timeFormat}}})],1)])]):_vm._e(),_c('div',{staticClass:\"el-picker-panel__content el-date-range-picker__content is-left\"},[_c('div',{staticClass:\"el-date-range-picker__header\"},[_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.leftPrevYear}}),_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-left\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.leftPrevMonth}}),(_vm.unlinkPanels)?_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",class:{ 'is-disabled': !_vm.enableYearArrow },attrs:{\"type\":\"button\",\"disabled\":!_vm.enableYearArrow},on:{\"click\":_vm.leftNextYear}}):_vm._e(),(_vm.unlinkPanels)?_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-right\",class:{ 'is-disabled': !_vm.enableMonthArrow },attrs:{\"type\":\"button\",\"disabled\":!_vm.enableMonthArrow},on:{\"click\":_vm.leftNextMonth}}):_vm._e(),_c('div',[_vm._v(_vm._s(_vm.leftLabel))])]),_c('date-table',{attrs:{\"selection-mode\":\"range\",\"date\":_vm.leftDate,\"default-value\":_vm.defaultValue,\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"range-state\":_vm.rangeState,\"disabled-date\":_vm.disabledDate,\"cell-class-name\":_vm.cellClassName,\"first-day-of-week\":_vm.firstDayOfWeek},on:{\"changerange\":_vm.handleChangeRange,\"pick\":_vm.handleRangePick}})],1),_c('div',{staticClass:\"el-picker-panel__content el-date-range-picker__content is-right\"},[_c('div',{staticClass:\"el-date-range-picker__header\"},[(_vm.unlinkPanels)?_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",class:{ 'is-disabled': !_vm.enableYearArrow },attrs:{\"type\":\"button\",\"disabled\":!_vm.enableYearArrow},on:{\"click\":_vm.rightPrevYear}}):_vm._e(),(_vm.unlinkPanels)?_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-left\",class:{ 'is-disabled': !_vm.enableMonthArrow },attrs:{\"type\":\"button\",\"disabled\":!_vm.enableMonthArrow},on:{\"click\":_vm.rightPrevMonth}}):_vm._e(),_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.rightNextYear}}),_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-arrow-right\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.rightNextMonth}}),_c('div',[_vm._v(_vm._s(_vm.rightLabel))])]),_c('date-table',{attrs:{\"selection-mode\":\"range\",\"date\":_vm.rightDate,\"default-value\":_vm.defaultValue,\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"range-state\":_vm.rangeState,\"disabled-date\":_vm.disabledDate,\"cell-class-name\":_vm.cellClassName,\"first-day-of-week\":_vm.firstDayOfWeek},on:{\"changerange\":_vm.handleChangeRange,\"pick\":_vm.handleRangePick}})],1)])],2),(_vm.showTime)?_c('div',{staticClass:\"el-picker-panel__footer\"},[_c('el-button',{staticClass:\"el-picker-panel__link-btn\",attrs:{\"size\":\"mini\",\"type\":\"text\"},on:{\"click\":_vm.handleClear}},[_vm._v(\" \"+_vm._s(_vm.t('el.datepicker.clear'))+\" \")]),_c('el-button',{staticClass:\"el-picker-panel__link-btn\",attrs:{\"plain\":\"\",\"size\":\"mini\",\"disabled\":_vm.btnDisabled},on:{\"click\":function($event){return _vm.handleConfirm(false)}}},[_vm._v(\" \"+_vm._s(_vm.t('el.datepicker.confirm'))+\" \")])],1):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./date-range.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./date-range.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./date-range.vue?vue&type=template&id=44ef7d98&\"\nimport script from \"./date-range.vue?vue&type=script&lang=js&\"\nexport * from \"./date-range.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"el-zoom-in-top\"},on:{\"after-leave\":function($event){return _vm.$emit('dodestroy')}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"el-picker-panel el-date-range-picker el-popper\",class:[{\n 'has-sidebar': _vm.$slots.sidebar || _vm.shortcuts\n }, _vm.popperClass]},[_c('div',{staticClass:\"el-picker-panel__body-wrapper\"},[_vm._t(\"sidebar\"),(_vm.shortcuts)?_c('div',{staticClass:\"el-picker-panel__sidebar\"},_vm._l((_vm.shortcuts),function(shortcut,key){return _c('button',{key:key,staticClass:\"el-picker-panel__shortcut\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.handleShortcutClick(shortcut)}}},[_vm._v(_vm._s(shortcut.text))])}),0):_vm._e(),_c('div',{staticClass:\"el-picker-panel__body\"},[_c('div',{staticClass:\"el-picker-panel__content el-date-range-picker__content is-left\"},[_c('div',{staticClass:\"el-date-range-picker__header\"},[_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.leftPrevYear}}),(_vm.unlinkPanels)?_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",class:{ 'is-disabled': !_vm.enableYearArrow },attrs:{\"type\":\"button\",\"disabled\":!_vm.enableYearArrow},on:{\"click\":_vm.leftNextYear}}):_vm._e(),_c('div',[_vm._v(_vm._s(_vm.leftLabel))])]),_c('month-table',{attrs:{\"selection-mode\":\"range\",\"date\":_vm.leftDate,\"default-value\":_vm.defaultValue,\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"range-state\":_vm.rangeState,\"disabled-date\":_vm.disabledDate},on:{\"changerange\":_vm.handleChangeRange,\"pick\":_vm.handleRangePick}})],1),_c('div',{staticClass:\"el-picker-panel__content el-date-range-picker__content is-right\"},[_c('div',{staticClass:\"el-date-range-picker__header\"},[(_vm.unlinkPanels)?_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-left\",class:{ 'is-disabled': !_vm.enableYearArrow },attrs:{\"type\":\"button\",\"disabled\":!_vm.enableYearArrow},on:{\"click\":_vm.rightPrevYear}}):_vm._e(),_c('button',{staticClass:\"el-picker-panel__icon-btn el-icon-d-arrow-right\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.rightNextYear}}),_c('div',[_vm._v(_vm._s(_vm.rightLabel))])]),_c('month-table',{attrs:{\"selection-mode\":\"range\",\"date\":_vm.rightDate,\"default-value\":_vm.defaultValue,\"min-date\":_vm.minDate,\"max-date\":_vm.maxDate,\"range-state\":_vm.rangeState,\"disabled-date\":_vm.disabledDate},on:{\"changerange\":_vm.handleChangeRange,\"pick\":_vm.handleRangePick}})],1)])],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./month-range.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../cache-loader/dist/cjs.js??ref--13-0!../../../../../thread-loader/dist/cjs.js!../../../../../babel-loader/lib/index.js!../../../../../cache-loader/dist/cjs.js??ref--1-0!../../../../../vue-loader/lib/index.js??vue-loader-options!./month-range.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./month-range.vue?vue&type=template&id=cdd96582&\"\nimport script from \"./month-range.vue?vue&type=script&lang=js&\"\nexport * from \"./month-range.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Picker from '../picker';\nimport DatePanel from '../panel/date';\nimport DateRangePanel from '../panel/date-range';\nimport MonthRangePanel from '../panel/month-range';\n\nconst getPanel = function(type) {\n if (type === 'daterange' || type === 'datetimerange') {\n return DateRangePanel;\n } else if (type === 'monthrange') {\n return MonthRangePanel;\n }\n return DatePanel;\n};\n\nexport default {\n mixins: [Picker],\n\n name: 'ElDatePicker',\n\n props: {\n type: {\n type: String,\n default: 'date'\n },\n timeArrowControl: Boolean\n },\n\n watch: {\n type(type) {\n if (this.picker) {\n this.unmountPicker();\n this.panel = getPanel(type);\n this.mountPicker();\n } else {\n this.panel = getPanel(type);\n }\n }\n },\n\n created() {\n this.panel = getPanel(this.type);\n }\n};\n","import DatePicker from './src/picker/date-picker';\n\n/* istanbul ignore next */\nDatePicker.install = function install(Vue) {\n Vue.component(DatePicker.name, DatePicker);\n};\n\nexport default DatePicker;\n","import 'element/css/date-picker.scss'\n\nimport DatePicker from 'element-ui/packages/date-picker'\n\nexport default DatePicker\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAACACAMAAADDApyIAAAAAXNSR0IArs4c6QAAAJNQTFRFAAAAn9+vn9+fn+evn+enn+OrouavoeOuoeOsn+OuouWvoOWvoeSuoeSsoeWuoeStoeWuoeWumOOmkOCej+Cfh96Yh96Xht6Yht6XftyQftyPddqIddqHddmIbNeBbNeAY9V4Y9R5WtJxUtBpUdBpUs9pSc1hSM1iQMtZQMpaP8paN8hSLsZLJcRDJcNDHME8E7806FuyZwAAABF0Uk5TABAQICBAj5CQkJ+foKDP0N8q3ahqAAAD3klEQVR42u2a3XLaMBCFlR8o/SNIFakxNKpVB0qEkd7/6ToGnJ1mkc8oRhdtcm5yAeMv2l2dlVeIVqPJTF5c00+34qjrscyk8fXh+Xcym6YtYSwzaizErcyqkfiaFzAR07yAmZCZ9ZYAyvpmnhFgfAjBZQOULoSMAL0OBzVFFoCyPrTyVmVJ8nIfDnrSA6oIBj+4MkuZqjoc5Ks8+8D4cJBVMg/gGH2ns+1k35ZmKWU2wMPe2/bvf2J274C3Bvi2NLZalpkA5S8fTnLmogDyV1JjLgtQ6/BSjb4EgJobl19eClDuw3ktLwIoXIjJz4cAqLnF1aihgMqHXjkAwMFHsgMA2oWAtQAAUJpYXgMACD7WTgEA8AWsx2SA3oYkVRFAYvC9W8fWNU8BLPeRUOt2bfQh8D0Bgh97xiKy3xAA+8JGHuXiicaAvsrv+ssmnNcDAEBfsP0rCF4DgAKV35wqGBhrFFBAW1sf/o1deH5vu38RrW0foPABqrHm+VhRyFY1i2IEECtvVFLKM2ONACLPhyX1myX6PMCGVwJc3FgFCBBIOIWI7zcOMGzj/0SEeWzlFQPwDDSG1QeTr7Qst2cPMhxQsADT4tPVKAYw/Cu0+ieTSnAMUHPb6eLmSuZuWAsCUDHzcl50kwrtk5dAACpm7irOKvo8SZqtgGnBTDxFhgCxFuLY4S5F9gWg4sVsu/NFgMIA3sfrU/DvfRgCIHXPYUO03esAPzoA3wg0JtKa1pYqRQAeI9sd7ly8QnE3IgCrdK+6md2CNlmaNAdUgfTYHe4a1Ip8T4oJwBvHlqy9z1W9kfdm6888nwG431G0VIvjonFzad3ffUJyQLRcHs/5BJ94qlXdnZZqLRmgz9AiRbTj4xy9srYqFTu2sDRj4XEzB4AWyXwkAQDSDIKfAICuQD6SAMBp5iY+AFClBh8DUJqZiQ8AoDQ3S4mEAQvQxgcAcJq/XwRgwAsgkKp9oyMAlOaNxLKevhgBSNvXxfHsDQOK/iaIZ2+REME071DwyWYBYBXZw3j2RjudA3Cay77gn5qZK6JlitMMgk82iwFFynCXXzhjgHRw5MevVDcpY80V8glw4QwByvf6BL/tN8iLcJoNCD4AMO2AD4HbfgDgk5FGgeADACI4hXwBA7jMPvCn4Nt+DCCt6q3b1hQDcNsPAFj8tj8DgG77/+3r3ncAEPvdVwYAbTeXAUBmlA9AnaDIAACdYAAAdIKBANAJhgJQJxgO4J0gD4A6QSaAT30Rn8kEsU4ANRUfZVZ9FqO8gBuRdwkTIcTVVGbT3ZVoCdnWMLkSR918ybCK2YeREEL8Af6P13TJageLAAAAAElFTkSuQmCC\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_setup.campaigns.loading),expression:\"campaigns.loading\"}],staticClass:\"campaign-performans\"},[_c('h2',{staticClass:\"headline-2\"}),_c('div',{staticClass:\"campaign-performans__bar\"},[_c(_setup.ElDatePicker,{attrs:{\"type\":\"daterange\",\"align\":\"right\",\"start-placeholder\":\"Start Date\",\"end-placeholder\":\"End Date\",\"default-value\":\"2012-05-05\",\"range-separator\":\"–\",\"picker-options\":_setup.pickerOptions,\"clearable\":false,\"format\":\"dd.MM.yyyy\"},model:{value:(_setup.dates),callback:function ($$v) {_setup.dates=$$v},expression:\"dates\"}}),_c('div',{staticClass:\"campaign-performans__list\"},[_c(_setup.ElButton,{staticClass:\"csv-btn\",attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":_setup.downloadExcel}},[_vm._v(\" \"+_vm._s(_setup.locale.downloadExcel)+\" \")]),_c(_setup.ElButton,{staticClass:\"csv-btn\",attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":_setup.downloadCSV}},[_vm._v(\" \"+_vm._s(_setup.locale.downloadCSV)+\" \")])],1)],1),_c(_setup.CommonIndicators),_c(_setup.CampaignPerformanceBarChart),_c('div',{staticClass:\"separator\"}),_c(_setup.CreativeStats),_c('div',{staticClass:\"separator\"}),_c(_setup.Top5)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"chart-wrap\"},[_c('div',{staticClass:\"chart-wrap__title\"},[_vm._v(\" \"+_vm._s(_setup.locale.title)+\" \")]),_c('div',{staticClass:\"chart-wrap__inner\"},[_c(_setup.Bar,{attrs:{\"chart-options\":_setup.chartOptions,\"chart-data\":_setup.chartData,\"chart-id\":\"bar-chart\",\"dataset-id-key\":\"label\",\"width\":400,\"height\":400}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, ref, watch } from 'vue'\nimport moment from 'moment'\nimport { Bar } from 'vue-chartjs/legacy'\nimport { BarElement, CategoryScale, Chart as ChartJS, Legend, LinearScale, LineController, LineElement, PointElement, Title, Tooltip } from 'chart.js'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CampaignPerformanceBarChart',\n setup(__props) {\n\nChartJS.register(Title, Tooltip, Legend, BarElement, CategoryScale, LinearScale, LineElement, LineController, PointElement);\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n title: useRootLocale(`${baseDir}.overviewTab.performanceTitle`),\n ctr: useRootLocale(`${baseDir}.CTR`),\n clicks: useRootLocale(`${baseDir}.clicks`),\n impressions: useRootLocale(`${baseDir}.impressions`),\n }\n})\n\nconst chartOptions = computed(() => ({\n responsive: true,\n maintainAspectRatio: false,\n options: {\n responsive: true,\n maintainAspectRatio: true,\n },\n scales: {\n x: {\n grid: {\n display: false,\n },\n stacked: true,\n ticks: {\n display: true,\n autoSkip: true,\n maxRotation: 90,\n minRotation: 0,\n },\n },\n impressions: {\n type: 'linear',\n position: 'left',\n grid: {\n display: false,\n },\n title: {\n display: true,\n text: `${locale.value.impressions}, ${locale.value.clicks}`,\n },\n },\n clicks: {\n type: 'linear',\n position: 'left',\n display: false,\n grid: {\n display: false,\n },\n ticks: {\n display: false,\n },\n },\n ctr: {\n type: 'linear',\n position: 'right',\n grid: {\n display: false,\n },\n title: {\n display: true,\n text: locale.value.ctr,\n },\n },\n },\n plugins: {\n legend: {\n position: 'bottom',\n labels: {\n padding: 20,\n pointStyle: 'circle',\n usePointStyle: true,\n },\n },\n },\n}))\n\nconst savedMonth = ref(null)\n\nconst rawData = computed(() => vm.$store.getters['adAnalytics/campaigns'].data)\nconst data = computed(() => {\n const result = []\n for (const item of rawData.value) {\n if (new Date(item.date) <= new Date()) {\n result.push(item)\n }\n }\n return result\n})\n\nconst chartData = computed(() => {\n return {\n labels: data.value.map(item => _getFormatttedDate(item.date)),\n datasets: [\n {\n label: locale.value.ctr,\n data: data.value.map(item => item.ctr),\n backgroundColor: '#FFCE0A',\n borderColor: '#FFCE0A',\n type: 'line',\n tension: 0.4,\n yAxisID: 'ctr',\n },\n {\n label: locale.value.clicks,\n data: data.value.map(item => item.clicks),\n categoryPercentage: 1.0,\n barPercentage: 0.99,\n backgroundColor: '#34CF52',\n yAxisID: 'impressions',\n },\n {\n label: locale.value.impressions,\n data: data.value.map(item => item.impressions),\n categoryPercentage: 1.0,\n barPercentage: 0.99,\n backgroundColor: '#266FFE',\n yAxisID: 'impressions',\n },\n ],\n }\n})\n\nwatch(data, () => {\n savedMonth.value = null\n})\n\nconst _getFormatttedDate = (date: Date) => {\n const total = data.value.length\n let showMonth = false\n\n const mDate = moment(date)\n const month = mDate.format('MMM')\n const day = mDate.format('D')\n\n if (!savedMonth.value || savedMonth.value !== month) {\n savedMonth.value = month\n showMonth = true\n }\n if (showMonth && total > 60) {\n return `${month} ${day}`\n }\n else if (showMonth) {\n return [day, month]\n }\n else {\n return day\n }\n}\n\nreturn { __sfc: true,locale, chartOptions, savedMonth, rawData, data, chartData, _getFormatttedDate, Bar }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignPerformanceBarChart.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignPerformanceBarChart.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CampaignPerformanceBarChart.vue?vue&type=template&id=ed5c2c42&scoped=true&\"\nimport script from \"./CampaignPerformanceBarChart.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CampaignPerformanceBarChart.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CampaignPerformanceBarChart.vue?vue&type=style&index=0&id=ed5c2c42&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ed5c2c42\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"common-indicators\"},[_c('div',{staticClass:\"common-indicators__cards\"},[_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.impressions,\"value\":_setup.data.impressions,\"total\":_setup.locale.outOf + ' ' + _setup.data.impressions_limit}}),_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.spent,\"value\":_setup.formattedSpentValue,\"total\":_setup.formattedSpentLimit}}),_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.ctr,\"value\":+_setup.data.ctr.toFixed(2) + '%'}}),_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.reach,\"value\":_setup.data.reach,\"simple\":\"\"}}),_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.viewability,\"value\":'99%',\"simple\":\"\"}}),_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.channels,\"value\":_setup.data.channels,\"simple\":\"\"}}),_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.avgCPM,\"value\":+_setup.data.avg_cpm.toFixed(),\"simple\":\"\"}}),_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.totalClicks,\"value\":_setup.data.clicks_total,\"simple\":\"\"}}),(_setup.campaignType === _setup.Campaign.BRAND_AWARENESS)?_c(_setup.CommonIndicatorsCard,{attrs:{\"title\":_setup.locale.fills,\"value\":_setup.data.fills,\"simple\":\"\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"common-indicators-card\",class:{'common-indicators-card_simple': _vm.simple}},[_c('div',{staticClass:\"common-indicators-card__title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),(_vm.value)?_c('div',{staticClass:\"common-indicators-card__value\"},[_vm._v(\" \"+_vm._s(_setup.formattedValue)+\" \")]):_vm._e(),(_vm.total)?_c('div',{staticClass:\"common-indicators-card__total\"},[_vm._v(\" \"+_vm._s(_setup.formattedTotal)+\" \")]):_vm._e(),(_vm.$slots.default)?_c('div',[_vm._t(\"default\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { numberToRanks } from 'lib/filters'\nimport { computed } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CommonIndicatorsCard',\n props: {\n title: null,\n value: null,\n total: null,\n simple: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n title: string\n value: number | string\n total?: string | number\n simple?: boolean\n}\n\n\n\nconst formattedValue = computed(() => {\n if (typeof props.value === 'number') {\n return numberToRanks(props.value)\n }\n\n return props.value\n})\n\nconst formattedTotal = computed(() => {\n if (typeof props.total === 'number') {\n return numberToRanks(props.total)\n }\n\n return props.total\n})\n\nreturn { __sfc: true,props, formattedValue, formattedTotal }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonIndicatorsCard.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonIndicatorsCard.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CommonIndicatorsCard.vue?vue&type=template&id=3d206bf4&scoped=true&\"\nimport script from \"./CommonIndicatorsCard.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CommonIndicatorsCard.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CommonIndicatorsCard.vue?vue&type=style&index=0&id=3d206bf4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d206bf4\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\n\nimport { vm } from '@/main'\nimport floatToCurrency from 'lib/filters/floatToCurrency'\nimport parseSlug from 'lib/helpers/parseSlug'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { useRoute } from 'lib/helpers/useRoute'\nimport { Campaign } from 'lib/types/campaign-type'\n\nimport CommonIndicatorsCard from './CommonIndicatorsCard.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CommonIndicators',\n setup(__props) {\n\nconst route = useRoute()\nconst data = computed(() => vm.$store.getters['adAnalytics/campaigns'])\nconst currencyCode = computed(() => data.value?.advertiser?.wallet?.currency.code || '')\nconst campaignType = computed(() => {\n const { type } = parseSlug(route.params.campaignSlug)\n return type\n})\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n impressions: useRootLocale(`${baseDir}.impressions`),\n spent: useRootLocale(`${baseDir}.spent`),\n ctr: useRootLocale(`${baseDir}.CTR`),\n totalClicks: useRootLocale(`${baseDir}.totalClicks`),\n fills: useRootLocale(`${baseDir}.fills`),\n reach: useRootLocale(`${baseDir}.reach`),\n channels: useRootLocale(`${baseDir}.channels`),\n categories: useRootLocale(`${baseDir}.categories`),\n avgCPM: useRootLocale(`${baseDir}.avgCPM`),\n outOf: useRootLocale(`${baseDir}.outOf`),\n viewability: useRootLocale(`${baseDir}.viewability`),\n }\n})\n\nconst formattedSpentValue = computed(() =>\n floatToCurrency(data.value.spent.toFixed(), false, currencyCode.value),\n)\nconst formattedSpentLimit = computed(() =>\n `${locale.value.outOf} ${floatToCurrency(data.value.spent_limit, false, currencyCode.value)}`,\n)\n\nreturn { __sfc: true,route, data, currencyCode, campaignType, locale, formattedSpentValue, formattedSpentLimit, Campaign, CommonIndicatorsCard }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonIndicators.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CommonIndicators.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CommonIndicators.vue?vue&type=template&id=a74fe9d2&scoped=true&\"\nimport script from \"./CommonIndicators.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CommonIndicators.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CommonIndicators.vue?vue&type=style&index=0&id=a74fe9d2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a74fe9d2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"campaign-performance\"},[_c('div',{staticClass:\"campaign-performance__wrap\"},[_c('h2',{staticClass:\"headline-2 campaign-performance__title\"},[_vm._v(\" \"+_vm._s(_setup.locale.title)+\" \")]),_c(_setup.ElSelect,{staticClass:\"campaign-performance__select\",attrs:{\"placeholder\":\"Select\",\"size\":\"large\",\"placement\":\"top-end\",\"popper-class\":\"creative-stats-popper\"},model:{value:(_setup.selectedCategory),callback:function ($$v) {_setup.selectedCategory=$$v},expression:\"selectedCategory\"}},[_c(_setup.ElOption,{attrs:{\"label\":_setup.locale.allCategories,\"value\":\"\"}}),_vm._l((_setup.options),function(item){return _c(_setup.ElOption,{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})})],2)],1),_c(_setup.CreativeStatsTable,{attrs:{\"data\":_setup.data,\"category\":_setup.selectedCategory}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(_setup.ElTable,{staticStyle:{\"width\":\"100%\"},attrs:{\"data\":_setup.filteredData,\"default-sort\":{ prop: 'ctr', order: 'descending' }}},[_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.groupName,\"prop\":\"group_name\"}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.creativeName,\"prop\":\"creative_name\"}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.adFormat,\"prop\":\"format\"}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.impressions,\"prop\":\"impressions\",\"sortable\":\"\",\"formatter\":(_row, _column, cellValue, _index) => {\n return _setup.numberToRanks(cellValue)\n }}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.reach,\"prop\":\"reach\",\"sortable\":\"\",\"formatter\":(_row, _column, cellValue, _index) => {\n return _setup.numberToRanks(cellValue)\n }}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.clicks,\"prop\":\"clicks\",\"sortable\":\"\",\"formatter\":(_row, _column, cellValue, _index) => {\n return _setup.numberToRanks(cellValue)\n }}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.ctr,\"prop\":\"ctr\",\"sortable\":\"\",\"formatter\":(_row, _column, cellValue, _index) => {\n return +cellValue.toFixed(2) + '%'\n }}}),_c(_setup.ElTableColumn,{attrs:{\"label\":_setup.locale.spent,\"prop\":\"spent\",\"sortable\":\"\",\"formatter\":(_row, _column, cellValue, _index) => {\n return _setup.floatToCurrency(+cellValue, false, _setup.currencyCode)\n }}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport ElTable from 'element/ElTable'\nimport ElTableColumn from 'element/ElTableColumn'\nimport { floatToCurrency, numberToRanks } from 'lib/filters'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { computed } from 'vue'\n\nimport { vm } from '@/main'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CreativeStatsTable',\n props: {\n data: null,\n category: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n data: any[]\n category: string\n}\n\n\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n next: useRootLocale('pagination.next'),\n prev: useRootLocale('pagination.prev'),\n groupName: useRootLocale(`${baseDir}.overviewTab.groupName`),\n creativeName: useRootLocale(`${baseDir}.overviewTab.creativeName`),\n adFormat: useRootLocale(`${baseDir}.adFormat`),\n impressions: useRootLocale(`${baseDir}.impressions`),\n reach: useRootLocale(`${baseDir}.reach`),\n clicks: useRootLocale(`${baseDir}.clicks`),\n ctr: useRootLocale(`${baseDir}.CTR`),\n spent: useRootLocale(`${baseDir}.spent`),\n }\n})\n\nconst filteredData = computed(() => {\n if (!props.category) return props.data\n return props.data.filter((item) => {\n return item.group_name === props.category\n })\n})\n\nconst currencyIcon = computed(() => vm.$store.getters['adAnalytics/campaigns']?.advertiser?.wallet?.icon)\nconst currencyCode = computed(() => vm.$store.getters['adAnalytics/campaigns']?.advertiser?.wallet?.currency.code)\n\nreturn { __sfc: true,props, locale, filteredData, currencyIcon, currencyCode, ElTable, ElTableColumn, floatToCurrency, numberToRanks }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreativeStatsTable.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreativeStatsTable.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CreativeStatsTable.vue?vue&type=template&id=163ded45&\"\nimport script from \"./CreativeStatsTable.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CreativeStatsTable.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, ref } from 'vue'\nimport ElOption from 'element/ElOption'\nimport ElSelect from 'element/ElSelect'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport CreativeStatsTable from '../CreativeStatsTable.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CreativeStats',\n setup(__props) {\n\nconst selectedCategory = ref('')\n\nconst data = computed(() => vm.$store.getters['adAnalytics/campaigns'].creatives)\nconst options = computed(() => {\n if (!data.value) return []\n return data.value.map(item => {\n return {\n value: item.group_name,\n label: item.group_name,\n }\n })\n})\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics.overviewTab'\n return {\n title: useRootLocale(`${baseDir}.creativeStats`),\n allCategories: useRootLocale(`${baseDir}.allCategories`),\n }\n})\n\nreturn { __sfc: true,selectedCategory, data, options, locale, ElOption, ElSelect, CreativeStatsTable }\n}\n\n})","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreativeStats.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreativeStats.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CreativeStats.vue?vue&type=template&id=3b26d312&scoped=true&\"\nimport script from \"./CreativeStats.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CreativeStats.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CreativeStats.vue?vue&type=style&index=0&id=3b26d312&prod&lang=scss&scoped=true&\"\nimport style1 from \"./CreativeStats.vue?vue&type=style&index=1&id=3b26d312&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b26d312\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"top-5\"},[_c('div',{staticClass:\"top-5__columns\"},[_c('div',{staticClass:\"top-5__column\"},[_c('h2',{staticClass:\"headline-2\"},[_vm._v(\" \"+_vm._s(_setup.locale.top5Channels)+\" \")]),(_setup.channels.length)?_c('div',{staticClass:\"top-5__cards\"},_vm._l((_setup.channels),function(streamer,idx){return _c(_setup.Top5Card,{key:idx,attrs:{\"is-category\":false,\"index\":idx + 1,\"image\":streamer.image,\"name\":streamer.name,\"impressions\":streamer.impressions,\"clicks\":streamer.clicks,\"ctr\":streamer.ctr}})}),1):_c('div',{staticClass:\"top-5__empty-msg text-l-regular\"},[_vm._v(\" \"+_vm._s(_setup.locale.noData)+\" \")]),_c(_setup.ElButton,{staticClass:\"top-5__button\",attrs:{\"type\":\"primary\"},on:{\"click\":_setup.goToCreators}},[_vm._v(\" \"+_vm._s(_setup.locale.creatorsLinkCaption)+\" \")])],1),_c('div',{staticClass:\"top-5__column\"},[_c('h2',{staticClass:\"headline-2\"},[_vm._v(\" \"+_vm._s(_setup.locale.top5Categories)+\" \")]),(_setup.categories.length)?_c('div',{staticClass:\"top-5__cards\"},_vm._l((_setup.categories),function(streamer,idx){return _c(_setup.Top5Card,{key:idx,attrs:{\"is-category\":true,\"index\":idx + 1,\"image\":streamer.image,\"name\":streamer.name,\"impressions\":streamer.impressions}})}),1):_c('div',{staticClass:\"top-5__empty-msg text-l-regular\"},[_vm._v(\" \"+_vm._s(_setup.locale.noData)+\" \")]),_c(_setup.ElButton,{staticClass:\"top-5__button\",attrs:{\"type\":\"primary\"},on:{\"click\":_setup.goToCategories}},[_vm._v(\" \"+_vm._s(_setup.locale.categoriesLinkCaption)+\" \")])],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"top-5-card\"},[_c('div',{staticClass:\"top-5-card__left\"},[_c('div',{staticClass:\"top-5-card__index\"},[_vm._v(\" \"+_vm._s(_vm.index)+\" \")]),_c('div',{staticClass:\"top-5-card__image\",class:{'top-5-card__image_category': _vm.isCategory},style:(_setup.placeholderImg)},[_c('div',{style:(_setup.bgImg)})])]),_c('div',{staticClass:\"top-5-card__right\"},[_c('div',{staticClass:\"top-5-card__name\"},[_vm._v(\" \"+_vm._s(_vm.name)+\" \")]),_c('div',{staticClass:\"top-5-card__stats\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.impressions),expression:\"impressions\"}],staticClass:\"top-5-card__stats-item\"},[_c('div',{staticClass:\"top-5-card__stats-label\"},[_vm._v(\" \"+_vm._s(_setup.locale.impressions)+\" \")]),_c('div',{staticClass:\"top-5-card__stats-value\"},[_vm._v(\" \"+_vm._s(_setup.numberToRanks(_vm.impressions))+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.clicks),expression:\"clicks\"}],staticClass:\"top-5-card__stats-item\"},[_c('div',{staticClass:\"top-5-card__stats-label\"},[_vm._v(\" \"+_vm._s(_setup.locale.clicks)+\" \")]),_c('div',{staticClass:\"top-5-card__stats-value\"},[_vm._v(\" \"+_vm._s(_setup.numberToRanks(_vm.clicks))+\" \")])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ctr),expression:\"ctr\"}],staticClass:\"top-5-card__stats-item\"},[_c('div',{staticClass:\"top-5-card__stats-label\"},[_vm._v(\" \"+_vm._s(_setup.locale.ctr)+\" \")]),_c('div',{staticClass:\"top-5-card__stats-value\"},[_vm._v(\" \"+_vm._s(_vm.ctr)+\"% \")])])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { numberToRanks } from 'lib/filters'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { computed } from 'vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Top5Card',\n props: {\n isCategory: { type: Boolean },\n index: null,\n image: null,\n name: null,\n impressions: null,\n clicks: null,\n ctr: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n isCategory: boolean\n index: number\n image: string\n name: string\n impressions: number\n clicks: number\n ctr: number\n}\n\n\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n impressions: useRootLocale(`${baseDir}.impressions`),\n clicks: useRootLocale(`${baseDir}.clicks`),\n ctr: useRootLocale(`${baseDir}.CTR`),\n }\n})\nconst placeholderImg = computed(() => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const user = require('assets/img/user-placeholder.png')\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const category = require('assets/img/category-placeholder.png')\n return `background-image: url(${props.isCategory ? category : user})`\n})\nconst bgImg = computed(() => `background-image: url('${props.image}')`)\n\nreturn { __sfc: true,props, locale, placeholderImg, bgImg, numberToRanks }\n}\n\n})","import mod from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Top5Card.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Top5Card.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Top5Card.vue?vue&type=template&id=4ed5c1fc&scoped=true&\"\nimport script from \"./Top5Card.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Top5Card.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Top5Card.vue?vue&type=style&index=0&id=4ed5c1fc&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4ed5c1fc\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\nimport ElButton from 'element/ElButton'\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport Top5Card from '../Top5Card.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Top5',\n setup(__props) {\n\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics.overviewTab'\n return {\n top5Channels: useRootLocale(`${baseDir}.top5Channels`),\n top5Categories: useRootLocale(`${baseDir}.top5Categories`),\n categoriesLinkCaption: useRootLocale(`${baseDir}.categoriesLinkCaption`),\n creatorsLinkCaption: useRootLocale(`${baseDir}.creatorsLinkCaption`),\n noData: useRootLocale('other.noData'),\n }\n})\n\nconst channels = computed(() => vm.$store.getters['adAnalytics/campaigns'].top_channels)\nconst categories = computed(() => vm.$store.getters['adAnalytics/campaigns'].top_categories)\n\nconst goToCreators = () => {\n vm.$store.dispatch('adAnalytics/setActiveTab', 'creators')\n}\n\nconst goToCategories = () => {\n vm.$store.dispatch('adAnalytics/setActiveTab', 'categories')\n}\n\nreturn { __sfc: true,locale, channels, categories, goToCreators, goToCategories, ElButton, Top5Card }\n}\n\n})","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Top5.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Top5.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Top5.vue?vue&type=template&id=ff16e916&scoped=true&\"\nimport script from \"./Top5.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Top5.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Top5.vue?vue&type=style&index=0&id=ff16e916&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ff16e916\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, onMounted, ref, watch } from 'vue'\nimport moment from 'moment'\n\nimport { vm } from '@/main'\nimport { useRootLocale } from 'lib/helpers/useLocale'\nimport { useRoute } from 'lib/helpers/useRoute'\nimport { useRouter } from 'lib/helpers/useRouter'\n\nimport ElButton from 'element/ElButton'\nimport ElDatePicker from 'element/ElDatePicker'\nimport loading from 'element/Loading'\n\nimport CampaignPerformanceBarChart from '../CampaignPerformanceBarChart.vue'\nimport CommonIndicators from '../CommonIndicators.vue'\nimport CreativeStats from '../sections/CreativeStats.vue'\nimport Top5 from '../sections/Top5.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CampaignPerformance',\n setup(__props) {\n\nconst vLoading = loading\nconst route = useRoute()\nconst router = useRouter()\nconst dates = ref<[null | Date, null | Date]>([null, null])\n\nconst campaigns = computed(() => vm.$store.getters['adAnalytics/campaigns'])\n\nconst currentDateInPicker = computed(() => {\n const lastDay = moment(campaigns.value.end)\n if (moment().diff(lastDay, 'days') <= 0) {\n return moment().subtract(1, 'days').toDate()\n }\n return new Date()\n})\nconst pickerOptions = computed(() => ({\n disabledDate: (date: Date) => {\n return date > currentDateInPicker.value || date < new Date(campaigns.value.start)\n },\n}))\n\nconst formattedDates = computed(() => {\n return {\n start: moment(dates.value[0]).format('YYYY-MM-DD'),\n end: moment(dates.value[1]).format('YYYY-MM-DD'),\n }\n})\nconst locale = computed(() => {\n const baseDir = 'views.partner.analytics'\n return {\n title: useRootLocale(`${baseDir}.overviewTab.title`),\n downloadCSV: useRootLocale(`${baseDir}.downloadCSV`),\n downloadExcel: useRootLocale(`${baseDir}.downloadExcel`),\n }\n})\n\nwatch(formattedDates, (value, oldValue) => {\n const dates = {\n start: value.start,\n end: value.end,\n }\n vm.$store.dispatch('adAnalytics/fetchCampaigns', dates)\n if (oldValue.start !== 'Invalid date') {\n router.replace({ query: { start: dates.start, end: dates.end } })\n }\n})\n\nconst downloadExcel = () => {\n const params = {\n start: formattedDates.value.start,\n end: formattedDates.value.end,\n type: 'campaigns',\n docType: 'xls',\n }\n vm.$store.dispatch('adAnalytics/downloadReport', params)\n}\n\nconst downloadCSV = () => {\n const params = {\n start: formattedDates.value.start,\n end: formattedDates.value.end,\n type: 'campaigns',\n\n }\n vm.$store.dispatch('adAnalytics/downloadReport', params)\n}\n\nonMounted(() => {\n const dateStart = new Date(route.query?.start as string)\n const dateEnd = new Date(route.query?.end as string)\n dates.value = [dateStart, dateEnd]\n})\n\nreturn { __sfc: true,vLoading, route, router, dates, campaigns, currentDateInPicker, pickerOptions, formattedDates, locale, downloadExcel, downloadCSV, ElButton, ElDatePicker, loading, CampaignPerformanceBarChart, CommonIndicators, CreativeStats, Top5 }\n}\n\n})","import mod from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignPerformance.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CampaignPerformance.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./CampaignPerformance.vue?vue&type=template&id=e6d4e0ea&scoped=true&\"\nimport script from \"./CampaignPerformance.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./CampaignPerformance.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./CampaignPerformance.vue?vue&type=style&index=0&id=e6d4e0ea&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e6d4e0ea\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreativeStats.vue?vue&type=style&index=1&id=3b26d312&prod&lang=scss&\"","/**\n * Bind after-leave event for vue instance. Make sure after-leave is called in any browsers.\n *\n * @param {Vue} instance Vue instance.\n * @param {Function} callback callback of after-leave event\n * @param {Number} speed the speed of transition, default value is 300ms\n * @param {Boolean} once weather bind after-leave once. default value is false.\n */\nexport default function(instance, callback, speed = 300, once = false) {\n if (!instance || !callback) throw new Error('instance & callback is required');\n let called = false;\n const afterLeaveCallback = function() {\n if (called) return;\n called = true;\n if (callback) {\n callback.apply(null, arguments);\n }\n };\n if (once) {\n instance.$once('after-leave', afterLeaveCallback);\n } else {\n instance.$on('after-leave', afterLeaveCallback);\n }\n setTimeout(() => {\n afterLeaveCallback();\n }, speed + 100);\n};\n","import '../css/loading.scss'\n\nimport afterLeave from 'element-ui/src/utils/after-leave'\nimport { addClass, getStyle, removeClass } from 'element-ui/src/utils/dom'\nimport { PopupManager } from 'element-ui/src/utils/popup'\n\n/* eslint-disable */\nimport Loading from './Loading';\n\nconst Mask = Vue.extend(Loading);\n\nconst toggleLoading = (el, binding) => {\n if (binding.value) {\n Vue.nextTick(() => {\n if (binding.modifiers.fullscreen) {\n el.originalPosition = getStyle(document.body, 'position');\n el.originalOverflow = getStyle(document.body, 'overflow');\n el.maskStyle.zIndex = PopupManager.nextZIndex();\n\n addClass(el.mask, 'is-fullscreen');\n insertDom(document.body, el, binding);\n }\n else {\n removeClass(el.mask, 'is-fullscreen');\n\n if (binding.modifiers.body) {\n el.originalPosition = getStyle(document.body, 'position');\n\n ['top', 'left'].forEach(property => {\n const scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';\n el.maskStyle[property] = el.getBoundingClientRect()[property] +\n document.body[scroll] +\n document.documentElement[scroll] -\n parseInt(getStyle(document.body, `margin-${property}`), 10) +\n 'px';\n });\n ['height', 'width'].forEach(property => {\n el.maskStyle[property] = el.getBoundingClientRect()[property] + 'px';\n });\n\n insertDom(document.body, el, binding);\n }\n else {\n el.originalPosition = getStyle(el, 'position');\n insertDom(el, el, binding);\n }\n }\n });\n }\n else {\n afterLeave(el.instance, _ => {\n el.domVisible = false;\n const target = binding.modifiers.fullscreen || binding.modifiers.body\n ? document.body\n : el;\n removeClass(target, 'el-loading-parent--relative');\n removeClass(target, 'el-loading-parent--hidden');\n el.instance.hiding = false;\n }, 300, true);\n el.instance.visible = false;\n el.instance.hiding = true;\n }\n};\nconst insertDom = (parent, el, binding) => {\n if (!el.domVisible && getStyle(el, 'display') !== 'none' && getStyle(el, 'visibility') !== 'hidden') {\n Object.keys(el.maskStyle).forEach(property => {\n el.mask.style[property] = el.maskStyle[property];\n });\n\n if (el.originalPosition !== 'absolute' && el.originalPosition !== 'fixed') {\n addClass(parent, 'el-loading-parent--relative');\n }\n if (binding.modifiers.fullscreen && binding.modifiers.lock) {\n addClass(parent, 'el-loading-parent--hidden');\n }\n el.domVisible = true;\n\n parent.appendChild(el.mask);\n Vue.nextTick(() => {\n if (el.instance.hiding) {\n el.instance.$emit('after-leave');\n }\n else {\n el.instance.visible = true;\n }\n });\n el.domInserted = true;\n }\n};\n\nexport default {\n bind (el, binding, vnode) {\n const textExr = el.getAttribute('element-loading-text')\n const spinnerExr = el.getAttribute('element-loading-spinner')\n const backgroundExr = el.getAttribute('element-loading-background')\n const customClassExr = el.getAttribute('element-loading-custom-class')\n const floatLoading = el.hasAttribute('element-float-loading')\n const vm = vnode.context\n const mask = new Mask({\n el: document.createElement('div'),\n data: {\n floatLoading: binding.floatLoading || floatLoading,\n text: vm && vm[textExr] || textExr,\n spinner: vm && vm[spinnerExr] || spinnerExr,\n background: vm && vm[backgroundExr] || backgroundExr,\n customClass: vm && vm[customClassExr] || customClassExr,\n fullscreen: !!binding.modifiers.fullscreen,\n },\n })\n el.instance = mask\n el.mask = mask.$el\n el.maskStyle = {}\n\n binding.value && toggleLoading(el, binding)\n },\n\n update (el, binding) {\n el.instance.setText(el.getAttribute('element-loading-text'))\n if (binding.oldValue !== binding.value) {\n toggleLoading(el, binding)\n }\n },\n\n unbind (el, binding) {\n if (el.domInserted) {\n el.mask\n && el.mask.parentNode\n && el.mask.parentNode.removeChild(el.mask)\n toggleLoading(el, {\n value: false,\n modifiers: binding.modifiers\n })\n }\n },\n}\n/* eslint-enable */\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -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)\n ? 0.5 * t * t * t\n : 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)\n ? 0.5 * t * t * t * t\n : -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)\n ? 0.5 * t * t * t * t * t\n : 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\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 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)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\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)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as log10, A as _factorize, B as finiteOrDefault, C as callback, D as _addGrace, E as _limitValue, F as toDegrees, G as _measureText, I as _int16Range, J as _alignPixel, K as toPadding, L as clipArea, M as renderText, N as unclipArea, O as toFont, Q as each, R as _toLeftRightCenter, S as _alignStartEnd, U as overrides, V as merge, W as _capitalize, X as getRelativePosition, Y as _rlookupByKey, Z as _lookupByKey, $ as _isPointInArea, a0 as getAngleFromPoint, a1 as getMaximumSize, a2 as _getParentNode, a3 as readUsedSize, a4 as throttled, a5 as supportsEventListenerOptions, a6 as _isDomSupported, a7 as descriptors, a8 as isFunction, a9 as _attachContext, aa as _createResolver, ab as _descriptors, ac as mergeIf, ad as uid, ae as debounce, af as retinaScale, ag as clearCanvas, ah as setsEqual, ai as _elementsEqual, aj as _isClickEvent, ak as _isBetween, al as _readValueToProps, am as _updateBezierControlPoints, an as _computeSegments, ao as _boundSegments, ap as _steppedInterpolation, aq as _bezierInterpolation, ar as _pointInLine, as as _steppedLineTo, at as _bezierCurveTo, au as drawPoint, av as addRoundedRectPath, aw as toTRBL, ax as toTRBLCorners, ay as _boundSegment, az as _normalizeAngle, aA as getRtlAdapter, aB as overrideTextDirection, aC as _textX, aD as restoreTextDirection, aE as drawPointLegend, aF as noop, aG as distanceBetweenPoints, aH as _setMinAndMaxByKey, aI as niceNum, aJ as almostWhole, aK as almostEquals, aL as _decimalPlaces, aM as _longestText, aN as _filterBetween, aO as _lookup } from './chunks/helpers.segment.mjs';\nexport { d as defaults } from './chunks/helpers.segment.mjs';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\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}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\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 createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\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 vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndex.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, 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 {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass ScatterController extends DatasetController {\n update(mode) {\n const meta = this._cachedMeta;\n const {data: points = []} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n const {dataset: line, _dataset} = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {showLine} = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n init(chartOptions) {}\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, 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], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.9.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n 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 if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle, circular) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle, circular);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\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 if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\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\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n 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 drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import { once, on } from 'element-ui/src/utils/dom';\nimport { isMac } from 'element-ui/src/utils/util';\n\nexport default {\n bind(el, binding, vnode) {\n let interval = null;\n let startTime;\n const maxIntervals = isMac() ? 100 : 200;\n const handler = () => vnode.context[binding.expression].apply();\n const clear = () => {\n if (Date.now() - startTime < maxIntervals) {\n handler();\n }\n clearInterval(interval);\n interval = null;\n };\n\n on(el, 'mousedown', (e) => {\n if (e.button !== 0) return;\n startTime = Date.now();\n once(document, 'mouseup', clear);\n clearInterval(interval);\n interval = setInterval(handler, maxIntervals);\n });\n }\n};\n","/**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nmodule.exports = isNull;\n","/* Modified from https://github.com/taylorhakes/fecha\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2015 Taylor Hakes\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 all\n * 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 THE\n * SOFTWARE.\n */\n\n/*eslint-disable*/\n// 把 YYYY-MM-DD 改成了 yyyy-MM-dd\n(function (main) {\n 'use strict';\n\n /**\n * Parse or format dates\n * @class fecha\n */\n var fecha = {};\n var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\n var twoDigits = '\\\\d\\\\d?';\n var threeDigits = '\\\\d{3}';\n var fourDigits = '\\\\d{4}';\n var word = '[^\\\\s]+';\n var literal = /\\[([^]*?)\\]/gm;\n var noop = function () {\n };\n\n function regexEscape(str) {\n return str.replace( /[|\\\\{()[^$+*?.-]/g, '\\\\$&');\n }\n\n function shorten(arr, sLen) {\n var newArr = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n }\n\n function monthUpdate(arrName) {\n return function (d, v, i18n) {\n var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());\n if (~index) {\n d.month = index;\n }\n };\n }\n\n function pad(val, len) {\n val = String(val);\n len = len || 2;\n while (val.length < len) {\n val = '0' + val;\n }\n return val;\n }\n\n var dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n var monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n var monthNamesShort = shorten(monthNames, 3);\n var dayNamesShort = shorten(dayNames, 3);\n fecha.i18n = {\n dayNamesShort: dayNamesShort,\n dayNames: dayNames,\n monthNamesShort: monthNamesShort,\n monthNames: monthNames,\n amPm: ['am', 'pm'],\n DoFn: function DoFn(D) {\n return D + ['th', 'st', 'nd', 'rd'][D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10];\n }\n };\n\n var formatFlags = {\n D: function(dateObj) {\n return dateObj.getDay();\n },\n DD: function(dateObj) {\n return pad(dateObj.getDay());\n },\n Do: function(dateObj, i18n) {\n return i18n.DoFn(dateObj.getDate());\n },\n d: function(dateObj) {\n return dateObj.getDate();\n },\n dd: function(dateObj) {\n return pad(dateObj.getDate());\n },\n ddd: function(dateObj, i18n) {\n return i18n.dayNamesShort[dateObj.getDay()];\n },\n dddd: function(dateObj, i18n) {\n return i18n.dayNames[dateObj.getDay()];\n },\n M: function(dateObj) {\n return dateObj.getMonth() + 1;\n },\n MM: function(dateObj) {\n return pad(dateObj.getMonth() + 1);\n },\n MMM: function(dateObj, i18n) {\n return i18n.monthNamesShort[dateObj.getMonth()];\n },\n MMMM: function(dateObj, i18n) {\n return i18n.monthNames[dateObj.getMonth()];\n },\n yy: function(dateObj) {\n return pad(String(dateObj.getFullYear()), 4).substr(2);\n },\n yyyy: function(dateObj) {\n return pad(dateObj.getFullYear(), 4);\n },\n h: function(dateObj) {\n return dateObj.getHours() % 12 || 12;\n },\n hh: function(dateObj) {\n return pad(dateObj.getHours() % 12 || 12);\n },\n H: function(dateObj) {\n return dateObj.getHours();\n },\n HH: function(dateObj) {\n return pad(dateObj.getHours());\n },\n m: function(dateObj) {\n return dateObj.getMinutes();\n },\n mm: function(dateObj) {\n return pad(dateObj.getMinutes());\n },\n s: function(dateObj) {\n return dateObj.getSeconds();\n },\n ss: function(dateObj) {\n return pad(dateObj.getSeconds());\n },\n S: function(dateObj) {\n return Math.round(dateObj.getMilliseconds() / 100);\n },\n SS: function(dateObj) {\n return pad(Math.round(dateObj.getMilliseconds() / 10), 2);\n },\n SSS: function(dateObj) {\n return pad(dateObj.getMilliseconds(), 3);\n },\n a: function(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];\n },\n A: function(dateObj, i18n) {\n return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();\n },\n ZZ: function(dateObj) {\n var o = dateObj.getTimezoneOffset();\n return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);\n }\n };\n\n var parseFlags = {\n d: [twoDigits, function (d, v) {\n d.day = v;\n }],\n Do: [twoDigits + word, function (d, v) {\n d.day = parseInt(v, 10);\n }],\n M: [twoDigits, function (d, v) {\n d.month = v - 1;\n }],\n yy: [twoDigits, function (d, v) {\n var da = new Date(), cent = +('' + da.getFullYear()).substr(0, 2);\n d.year = '' + (v > 68 ? cent - 1 : cent) + v;\n }],\n h: [twoDigits, function (d, v) {\n d.hour = v;\n }],\n m: [twoDigits, function (d, v) {\n d.minute = v;\n }],\n s: [twoDigits, function (d, v) {\n d.second = v;\n }],\n yyyy: [fourDigits, function (d, v) {\n d.year = v;\n }],\n S: ['\\\\d', function (d, v) {\n d.millisecond = v * 100;\n }],\n SS: ['\\\\d{2}', function (d, v) {\n d.millisecond = v * 10;\n }],\n SSS: [threeDigits, function (d, v) {\n d.millisecond = v;\n }],\n D: [twoDigits, noop],\n ddd: [word, noop],\n MMM: [word, monthUpdate('monthNamesShort')],\n MMMM: [word, monthUpdate('monthNames')],\n a: [word, function (d, v, i18n) {\n var val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n d.isPm = false;\n } else if (val === i18n.amPm[1]) {\n d.isPm = true;\n }\n }],\n ZZ: ['[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z', function (d, v) {\n var parts = (v + '').match(/([+-]|\\d\\d)/gi), minutes;\n\n if (parts) {\n minutes = +(parts[1] * 60) + parseInt(parts[2], 10);\n d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;\n }\n }]\n };\n parseFlags.dd = parseFlags.d;\n parseFlags.dddd = parseFlags.ddd;\n parseFlags.DD = parseFlags.D;\n parseFlags.mm = parseFlags.m;\n parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;\n parseFlags.MM = parseFlags.M;\n parseFlags.ss = parseFlags.s;\n parseFlags.A = parseFlags.a;\n\n\n // Some common format strings\n fecha.masks = {\n default: 'ddd MMM dd yyyy HH:mm:ss',\n shortDate: 'M/D/yy',\n mediumDate: 'MMM d, yyyy',\n longDate: 'MMMM d, yyyy',\n fullDate: 'dddd, MMMM d, yyyy',\n shortTime: 'HH:mm',\n mediumTime: 'HH:mm:ss',\n longTime: 'HH:mm:ss.SSS'\n };\n\n /***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n */\n fecha.format = function (dateObj, mask, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof dateObj === 'number') {\n dateObj = new Date(dateObj);\n }\n\n if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {\n throw new Error('Invalid Date in fecha.format');\n }\n\n mask = fecha.masks[mask] || mask || fecha.masks['default'];\n\n var literals = [];\n\n // Make literals inactive by replacing them with ??\n mask = mask.replace(literal, function($0, $1) {\n literals.push($1);\n return '@@@';\n });\n // Apply formatting rules\n mask = mask.replace(token, function ($0) {\n return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);\n });\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, function() {\n return literals.shift();\n });\n };\n\n /**\n * Parse a date string into an object, changes - into /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @returns {Date|boolean}\n */\n fecha.parse = function (dateStr, format, i18nSettings) {\n var i18n = i18nSettings || fecha.i18n;\n\n if (typeof format !== 'string') {\n throw new Error('Invalid format in fecha.parse');\n }\n\n format = fecha.masks[format] || format;\n\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n\n var dateInfo = {};\n var parseInfo = [];\n var literals = [];\n format = format.replace(literal, function($0, $1) {\n literals.push($1);\n return '@@@';\n });\n var newFormat = regexEscape(format).replace(token, function ($0) {\n if (parseFlags[$0]) {\n var info = parseFlags[$0];\n parseInfo.push(info[1]);\n return '(' + info[0] + ')';\n }\n\n return $0;\n });\n newFormat = newFormat.replace(/@@@/g, function() {\n return literals.shift();\n });\n var matches = dateStr.match(new RegExp(newFormat, 'i'));\n if (!matches) {\n return null;\n }\n\n for (var i = 1; i < matches.length; i++) {\n parseInfo[i - 1](dateInfo, matches[i], i18n);\n }\n\n var today = new Date();\n if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n\n var date;\n if (dateInfo.timezoneOffset != null) {\n dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;\n date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,\n dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));\n } else {\n date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,\n dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);\n }\n return date;\n };\n\n /* istanbul ignore next */\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = fecha;\n } else if (typeof define === 'function' && define.amd) {\n define(function () {\n return fecha;\n });\n } else {\n main.fecha = fecha;\n }\n})(this);\n","function broadcast(componentName, eventName, params) {\n this.$children.forEach(child => {\n var name = child.$options.componentName;\n\n if (name === componentName) {\n child.$emit.apply(child, [eventName].concat(params));\n } else {\n broadcast.apply(child, [componentName, eventName].concat([params]));\n }\n });\n}\nexport default {\n methods: {\n dispatch(componentName, eventName, params) {\n var parent = this.$parent || this.$root;\n var name = parent.$options.componentName;\n\n while (parent && (!name || name !== componentName)) {\n parent = parent.$parent;\n\n if (parent) {\n name = parent.$options.componentName;\n }\n }\n if (parent) {\n parent.$emit.apply(parent, [eventName].concat(params));\n }\n },\n broadcast(componentName, eventName, params) {\n broadcast.call(this, componentName, eventName, params);\n }\n }\n};\n","export * from \"-!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LineStatistic.vue?vue&type=style&index=0&id=14f31538&prod&lang=scss&scoped=true&\""],"sourceRoot":""}