{"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:///./node_modules/core-js/internals/delete-property-or-throw.js","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarLinks.vue?4fd4","webpack:///./src/components/layouts/DashboardLayout/components/DashboardTitle.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardTitle.vue?730f","webpack:///./src/components/layouts/DashboardLayout/components/DashboardTitle.vue?50e9","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileRouterLink.vue","webpack:///src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileRouterLink.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileRouterLink.vue?0a0e","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileRouterLink.vue?e4b7","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CategoriesPerformance.vue?f15a","webpack:///./node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","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/components/layouts/DashboardLayout/index.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/index.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardLogoutButton.vue","webpack:///src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardLogoutButton.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardLogoutButton.vue?4ab0","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardLogoutButton.vue?1f80","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardRequestDemo.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardRequestDemo.vue?a8cb","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardRequestDemo.vue?efc0","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardRequestDemo.vue?f676","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarLinks.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarLinks.vue?0810","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarLinks.vue?a67d","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarLinks.vue?0ffd","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/index.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/Link.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/Link.vue?4beb","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/Link.vue?8ce4","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/Link.vue?3d34","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/navigationList.ts","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/index.vue?bbec","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/index.vue?e058","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/index.vue?fd19","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/index.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/index.vue?c5b2","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/index.vue?c540","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarSocials.vue","webpack:///src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarSocials.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarSocials.vue?577f","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarSocials.vue?c35a","webpack:///src/components/layouts/DashboardLayout/components/DashboardSidebar/index.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/index.vue?16a6","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/index.vue?eead","webpack:///./src/components/layouts/DashboardLayout/index.vue?2ab8","webpack:///./src/components/layouts/DashboardLayout/index.vue?e229","webpack:///./src/components/layouts/DashboardLayout/index.vue?22d6","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CategoriesTable.vue?7dfd","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/index.vue?72ea","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileLinks.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileLinks.vue?e0f1","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileLinks.vue?86e9","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileLinks.vue?c495","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CreatorsTable.vue?c3da","webpack:///./node_modules/core-js/modules/es.array.unshift.js","webpack:///./src/lib/helpers/useRoute.ts","webpack:///./src/views/Partner/pages/PartnerAnalytics/store/index.js","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarSocials.vue?459a","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/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/index.vue","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/Partner/pages/PartnerAnalytics/components/sections/Tabs.vue?a44e","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardRequestDemo.vue?7480","webpack:///./node_modules/element-ui/src/mixins/migrating.js","webpack:///./node_modules/element-ui/packages/table/src/config.js","webpack:///./node_modules/element-ui/packages/table/src/table-column.js","webpack:///./node_modules/element-ui/packages/table-column/index.js","webpack:///./src/plugins/element-ui/ElTableColumn/index.js","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileLinks.vue?6673","webpack:///./node_modules/normalize-wheel/src/isEventSupported.js","webpack:///./node_modules/vue-chartjs/legacy/index.js","webpack:///./src/components/layouts/DashboardLayout/components/DashboardTitle.vue?03f2","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarProfile/ProfileRouterLink.vue?c88e","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/normalize-wheel/src/UserAgent_DEPRECATED.js","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/Top5.vue?8ac8","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/CommonIndicatorsCard.vue?eb46","webpack:///./node_modules/element-ui/packages/checkbox/src/checkbox.vue","webpack:///node_modules/element-ui/packages/checkbox/src/checkbox.vue","webpack:///./node_modules/element-ui/packages/checkbox/src/checkbox.vue?7af2","webpack:///./node_modules/element-ui/packages/checkbox/src/checkbox.vue?a4e2","webpack:///./node_modules/element-ui/packages/checkbox/index.js","webpack:///./src/assets/img/user-placeholder.png","webpack:///./node_modules/normalize-wheel/src/ExecutionEnvironment.js","webpack:///./src/views/Partner/pages/PartnerAnalytics/components/sections/CampaignPerformance.vue?d4b5","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/normalize-wheel/index.js","webpack:///./node_modules/element-ui/packages/table/src/util.js","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/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/Link.vue?9811","webpack:///./src/views/Partner/pages/PartnerAnalytics/index.vue","webpack:///./src/views/Partner/pages/PartnerAnalytics/index.vue?8256","webpack:///./src/views/Partner/pages/PartnerAnalytics/index.vue?69a3","webpack:///./src/views/Partner/pages/PartnerAnalytics/index.vue?4636","webpack:///./src/assets/img/category-placeholder.png","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardLogoutButton.vue?dde9","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/normalize-wheel/src/normalizeWheel.js","webpack:///./node_modules/chart.js/dist/chunks/helpers.segment.mjs","webpack:///./node_modules/chart.js/dist/chart.mjs","webpack:///./src/components/layouts/DashboardLayout/index.vue?fe11","webpack:///./node_modules/element-ui/src/directives/repeat-click.js","webpack:///./node_modules/element-ui/src/utils/date.js","webpack:///src/components/layouts/DashboardLayout/components/DashboardTitle.vue","webpack:///./src/components/layouts/DashboardLayout/components/DashboardSidebar/components/DashboardSidebarNav/index.vue?8e6f","webpack:///./node_modules/element-ui/src/mixins/emitter.js","webpack:///./node_modules/element-ui/packages/table/src/table.vue","webpack:///./node_modules/element-ui/src/directives/mousewheel.js","webpack:///./node_modules/element-ui/packages/table/src/store/expand.js","webpack:///./node_modules/element-ui/packages/table/src/store/current.js","webpack:///./node_modules/element-ui/packages/table/src/store/tree.js","webpack:///./node_modules/element-ui/packages/table/src/store/watcher.js","webpack:///./node_modules/element-ui/packages/table/src/store/index.js","webpack:///./node_modules/element-ui/packages/table/src/store/helper.js","webpack:///./node_modules/element-ui/packages/table/src/table-layout.js","webpack:///./node_modules/element-ui/packages/tooltip/src/main.js","webpack:///./node_modules/element-ui/packages/tooltip/index.js","webpack:///./node_modules/element-ui/packages/table/src/layout-observer.js","webpack:///./node_modules/element-ui/packages/table/src/table-row.js","webpack:///./node_modules/element-ui/packages/table/src/table-body.js","webpack:///./node_modules/element-ui/packages/table/src/filter-panel.vue","webpack:///./node_modules/element-ui/packages/table/src/dropdown.js","webpack:///./node_modules/element-ui/packages/checkbox/src/checkbox-group.vue","webpack:///node_modules/element-ui/packages/checkbox/src/checkbox-group.vue","webpack:///./node_modules/element-ui/packages/checkbox/src/checkbox-group.vue?9ffe","webpack:///./node_modules/element-ui/packages/checkbox/src/checkbox-group.vue?f87b","webpack:///./node_modules/element-ui/packages/checkbox-group/index.js","webpack:///node_modules/element-ui/packages/table/src/filter-panel.vue","webpack:///./node_modules/element-ui/packages/table/src/filter-panel.vue?f30d","webpack:///./node_modules/element-ui/packages/table/src/filter-panel.vue?ab88","webpack:///./node_modules/element-ui/packages/table/src/table-header.js","webpack:///./node_modules/element-ui/packages/table/src/table-footer.js","webpack:///node_modules/element-ui/packages/table/src/table.vue","webpack:///./node_modules/element-ui/packages/table/src/table.vue?bfbd","webpack:///./node_modules/element-ui/packages/table/src/table.vue?7d83","webpack:///./node_modules/element-ui/packages/table/index.js","webpack:///./src/plugins/element-ui/ElTable/index.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","tryToString","$TypeError","TypeError","module","exports","O","P","_t","class","$route","role","avatar","initials","_ref2","user","_ref3","widget","_ref4","twitch","_ref5","state","auth","youtube","_ref6","trovo","_ref7","_this$this$widget$pla","_ref8","names","split","charAt","toUpperCase","_extends","bind","a","b","c","arguments","d","prototype","hasOwnProperty","call","apply","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","DashboardTitle","showCopyLink","copyLinkState","copyLink","copyLinkSuccess","proxy","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","alert","DashboardSidebar","fullWidth","centered","menuActive","toggleMenu","$isPartner","$isMobile","logout","$t","methods","removeToken","onClick","Intercom","_setup$locale$links$i","classes","getLink","icon","width","height","links","label","useRootLocaleObj","domain","hide","url","whatsNew","filter","beamer_config","language","$root","$i18n","deleted_request","navigation","freemium_active","Link","onFreemiumClick","hasActiveSubitems","subitems","subitem","isSubItemVisible","_vm$item$subitems","path","isActive","routeName","parseSlug","currentRoute","find","_d","nestedRoutes","includes","navigationList","streamer","inBeta","partner","reactive","navigationListStatic","debugActive","debugAdded","addPartnerDebug","nav","push","addStreamerDebug","loadWidget","setInterval","_bootstrapped","apiVersion","slug","clearInterval","_f","configureMenu","onProfileClick","slot","visiblePopover","$rootLocale","components","LocaleSwitcher","DashboardSidebarLogo","DashboardSidebarNav","DashboardSidebarProfile","DashboardRequestDemo","DashboardSidebarLinks","DashboardSidebarSocials","DashboardLogoutButton","data","document","querySelector","overflow","default","$emit","$","toObject","lengthOfArrayLike","setArrayLength","deletePropertyOrThrow","doesNotExceedSafeInteger","INCORRECT_RESULT","unshift","properErrorOnNonWritableLength","defineProperty","writable","error","FORCED","target","proto","arity","forced","len","argCount","k","to","j","getCurrentInstance","Error","defaultState","campaignType","activeTab","campaignInfo","status","updatedAt","impressions_limit","spent","spent_limit","clicks_total","fills","reach","channels","avg_cpm","creatives","top_channels","top_categories","per_page","getDefaultState","JSON","parse","stringify","namespaced","mutations","setCampaigns","payload","setCreators","setCategoriesImpressions","setCategoriesDistribution","setCampaignInfo","setActiveTab","setCampaignSlug","setCampaignType","resetState","actions","commit","res","Api","get","filtersString","directions","descending","ascending","tab","downloadReport","_ref9","docType","open","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","rootTabs","tabPosition","barStyle","tabs","inject","offset","tabSize","sizeName","sizeDir","firstUpperCase","str","toLowerCase","L","every","$el","arrayFind","$parent","$refs","t","paneName","active","tabStyles","getComputedStyle","paddingLeft","paddingRight","transform","msTransform","webkitTransform","noop","TabBar","panes","currentName","String","editable","onTabClick","Function","onTabRemove","stretch","scrollable","navOffset","isFocus","focusable","navStyle","dir","scrollPrev","containerSize","navScroll","currentOffset","newOffset","scrollNext","navSize","scrollToActiveTab","isHorizontal","activeTabBounding","getBoundingClientRect","navScrollBounding","maxOffset","offsetWidth","offsetHeight","left","right","top","bottom","Math","max","min","update","changeTab","keyCode","nextIndex","currentIndex","tabList","currentTarget","querySelectorAll","focus","click","setFocus","removeFocus","visibilityChangeHandler","visibility","visibilityState","windowBlurHandler","windowFocusHandler","updated","scrollBtn","pane","tabName","closable","isClosable","btnClose","ev","tabLabelContent","$slots","tabindex","disabled","blur","mounted","addResizeListener","addEventListener","beforeDestroy","removeResizeListener","removeEventListener","TabNav","activeName","addable","beforeLeave","provide","setCurrentName","$nextTick","_","calcPaneInstances","isForceUpdate","undefined","paneSlots","vnode","tag","componentOptions","Ctor","options","componentInstance","panesChanged","handleTabClick","event","handleTabRemove","stopPropagation","handleTabAdd","changeCurrentName","before","then","newButton","navData","header","_mergeJSXProps","panels","created","$on","ElTabs","install","Vue","Tabs","ElPopover","ProfileRouterLink","ProfileLinks","VueTypes","function","href","ElTabPane","inactive","overview","val","lazy","loaded","componentName","labelContent","TabPane","events","cellStarts","selection","minWidth","realWidth","className","expand","cellForced","renderHeader","store","states","isAllSelected","toggleAllSelection","renderCell","isSelected","selectable","input","sortable","resizable","isExpanded","toggleRowExpansion","defaultRenderCell","property","getPropByPath","v","treeCellPrefix","treeNode","ele","loadOrToggle","indent","expanded","noLazyChildren","expandClasses","iconClasses","columnIdSeed","labelClassName","sortMethod","columnKey","align","headerAlign","showTooltipWhenOverflow","showOverflowTooltip","fixed","reserveSelection","filterMethod","filteredValue","filterPlacement","filterMultiple","Number","sortOrders","validator","isSubColumn","columns","owner","parent","tableId","columnOrTableParent","columnId","parseWidth","realMinWidth","parseMinWidth","realAlign","realHeaderAlign","getPropsData","_len","_key","cur","isArray","forEach","getColumnElIndex","children","child","setColumnWidth","setColumnForcedProps","source","keys","setColumnRenders","$createElement","console","warn","scope","$scopedSlots","originRenderCell","renderExpanded","prefix","registerNormalWatchers","aliases","allAliases","$watch","newVal","columnConfig","registerComplexWatchers","updateColumns","scheduleLayout","ElCheckbox","beforeCreate","defaults","filterable","isColumnGroup","filterOpened","basicProps","sortProps","selectProps","filterProps","mergeOptions","chains","compose","hiddenColumns","columnIndex","destroyed","TableColumn","useHasFeature","ExecutionEnvironment","isEventSupported","eventNameSuffix","capture","canUseDOM","eventName","isSupported","element","createElement","setAttribute","implementation","hasFeature","ChartEmits","chartCreate","createChartFunction","chartData","chartOptions","context","ChartRendered","chartUpdate","chart","ChartUpdated","chartDestroy","destroy","ChartDestroyed","getChartData","datasetIdKey","nextData","labels","datasets","setChartDatasets","oldData","newData","addedDatasets","nextDataset","currentDataset","dataset","setChartLabels","LabelsUpdated","setChartOptions","compareData","newDatasetLabels","oldDatasetLabels","templateError","ANNOTATION_PLUGIN_KEY","generateChart","chartId","chartType","chartController","_chartRef","required","cssClasses","styles","plugins","_chart","_id","random","toString","substring","ref1","pluginSettings","register","$data","renderChart","handler","newValue","chartDataHandler","deep","chartOptionsHandler","currentChart","getCurrentChart","canvas","canvasEl2DContext","getContext","setCurrentChart","isEqualLabelsAndDatasetsLength","updateChart","hasAnnotationPlugin","Bar","onPagerClick","pageCount","currentPage","showPrevMore","quickprevIconClass","onMouseenter","pagers","pager","showNextMore","quicknextIconClass","pagerCount","tagName","textContent","pagerCountOffset","isNaN","direction","halfPagerCount","array","startPage","floor","current","Select","pageSize","small","layout","pageSizes","popperClass","prevText","nextText","background","hideOnSinglePage","internalCurrentPage","internalPageSize","lastEmittedPage","userChangePageSize","internalPageCount","template","TEMPLATE_MAP","jumper","handleCurrentChange","sizes","trim","rightWrapper","haveRightWrapper","compo","Prev","Next","Sizes","mixins","Locale","immediate","oldVal","valueEquals","handleChange","ElSelect","ElOption","parseInt","Jumper","ElInput","userInput","handleKeyup","handleInput","getValidCurrentPage","emitChange","Total","Pager","havePageCount","resetValue","ceil","oldPage","Pagination","Types","Kinds","Formats","kind","_ie","_firefox","_opera","_webkit","_chrome","_ie_real_version","_osx","_windows","_linux","_android","_win64","_iphone","_ipad","_native","_mobile","_populated","_populate","uas","navigator","userAgent","agent","exec","os","NaN","documentMode","trident","ver","UserAgent_DEPRECATED","ie","ieCompatibilityMode","ie64","firefox","opera","webkit","safari","chrome","windows","osx","linux","iphone","mobile","nativeApp","android","ipad","border","checkboxSize","isDisabled","isChecked","indeterminate","trueLabel","falseLabel","domProps","_i","_q","$$a","$$el","$$c","checked","$$i","slice","Emitter","elForm","elFormItem","selfModel","isLimitExceeded","isGroup","set","_checkboxGroup","$options","isLimitDisabled","_elFormItemSize","elFormItemSize","temCheckboxSize","size","$ELEMENT","checkboxGroupSize","controls","addToStore","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","isInWorker","getCell","cell","parentNode","isObject","obj","orderBy","sortKey","reverse","getKey","by","getValueByPath","$value","compare","sort","getColumnById","table","getColumnByKey","getColumnByCell","matches","match","getRowIdentity","rowKey","getKeysMap","arrayMap","hasOwn","config","parseHeight","test","funcs","arg","toggleRowStatus","statusArr","changed","included","addRow","removeRow","splice","walkTreeNode","root","cb","childrenKey","lazyKey","isNil","_walker","level","ranged","handleClose","pickerSize","pickerDisabled","pickerVisible","handleRangeClick","handleMouseEnter","showClose","handleKeydown","triggerClass","startPlaceholder","readonly","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","string","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","n","modifyDate","y","m","getSeconds","getMilliseconds","modifyTime","s","modifyWithTimeString","time","clearTime","clearMilliseconds","limitTimeRange","normalizeDate","ndate","nranges","some","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","text","RANGE_FORMATTER","RANGE_PARSER","separator","range1","range2","TYPE_VALUE_RESOLVER_MAP","parser","trueDate","number","PLACEMENT_MAP","center","parseAsFormatAndType","customFormat","formatAsFormatAndType","dateEquals","aIsDate","bIsDate","aIsArray","bIsArray","isString","valueFormat","prefixIcon","clearable","defaultValue","defaultTime","unlinkPanels","validateEvent","Clickoutside","valueOnOpen","unwatchPickerOptions","showPicker","hidePicker","parsedValue","picker","reference","refInput","valueIsEmpty","selectionMode","showTrigger","formattedValue","join","valueIsDateObject","popperOptions","gpuAcceleration","placement","handleFieldReset","parseValue","isParsed","formatToValue","isFormattable","parseString","formatToString","isValidValue","emitInput","handleClear","initialValue","visible","activeElement","resetView","destroyPopper","$isServer","mountPicker","updatePopper","adjustSpinners","_this","panel","$mount","popperElm","showTime","arrowControl","timeArrowControl","updateOptions","option","appendChild","doDestroy","pos","setSelectionRange","unmountPicker","$destroy","$off","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","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","spinner","needInitAdjust","selectionRange","first","mapping","changeSelectionRange","preventDefault","list","handleYearTableClick","getCellStyle","startYear","datesInYear","numOfDays","firstDay","today","arrayFindIndex","coerceTruthyValueToArray","hasClass","innerText","idx","handleMonthTableClick","handleMouseMove","rows","datesInMonth","clearDate","getMonthTimestamp","removeFromArray","pred","rangeState","endDate","selecting","markRange","tableRows","lastRow","lastColumn","cellMatchesDate","inRange","getMonthOfCell","l","rowIndex","cellIndex","newDate","selectedDate","isToday","cellDate","selected","$set","showWeekNumber","WEEKS","isWeekActive","getCellClasses","getDateTimestamp","_clearTime","offsetDay","startDate","dateCountOfMonth","dateCountOfLastMonth","count","numberOfDaysFromPreviousMonth","customClass","getDateOfCell","offsetFromStart","setMonth","setFullYear","dayOffset","weekDate","weekNumber","inputElm","pickerWidth","getDefaultValue","timepicker","timeFormat","args","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","DashboardLayout","Header","CampaignPerformance","CreatorsPerformance","CategoriesPerformance","urlSlug","serverDate","hasModule","registerModule","onBeforeUnmount","downloadExcel","CommonIndicators","CampaignPerformanceBarChart","CreativeStats","Top5","ChartJS","Title","Tooltip","Legend","BarElement","CategoryScale","LinearScale","LineElement","LineController","PointElement","responsive","maintainAspectRatio","scales","x","grid","display","stacked","ticks","autoSkip","maxRotation","minRotation","position","legend","padding","pointStyle","usePointStyle","savedMonth","rawData","_getFormatttedDate","backgroundColor","borderColor","tension","yAxisID","categoryPercentage","barPercentage","showMonth","mDate","CommonIndicatorsCard","outOf","formattedSpentValue","formattedSpentLimit","viewability","avgCPM","totalClicks","Campaign","BRAND_AWARENESS","simple","formattedTotal","currencyCode","advertiser","wallet","currency","code","floatToCurrency","selectedCategory","allCategories","CreativeStatsTable","filteredData","groupName","creativeName","adFormat","_row","_column","_index","group_name","currencyIcon","top5Channels","Top5Card","goToCreators","creatorsLinkCaption","top5Categories","goToCategories","categoriesLinkCaption","isCategory","placeholderImg","bgImg","require","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","normalizeWheel","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","getEventType","uid","isNullOrUndef","isNumberFinite","isFinite","finiteOrDefault","valueOrDefault","toPercentage","dimension","endsWith","toDimension","thisArg","each","loopable","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","clone$1","create","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","keyResolvers","o","resolveObjectKey","resolver","_getKeyResolver","_splitKey","parts","tmp","part","_capitalize","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","pop","isNumber","epsilon","almostWhole","rounded","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","_lookup","cmp","mid","hi","lo","_lookupByKey","last","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","configurable","enumerable","method","base","object","unlistenArrayEvents","stub","_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","minDefined","maxDefined","getUserBounds","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","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","A","B","C","D","E","F","hex","h1","h2","eq","isShort","r","hexParse","hexString","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","hueValue","rgb2hsl","calln","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","p1","p2","rotate","deg","hslString","Z","Y","X","W","V","U","T","S","R","Q","N","M","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","unpack","unpacked","tkeys","ok","nk","nameParse","transparent","RGB_RE","rgbParse","rgbString","interpolate","rgb1","rgb2","modHSL","ratio","clone","fromObject","functionParse","Color","_rgb","_valid","weight","c1","c2","w2","w1","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","overrides","getScope$1","node","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","defineProperties","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","RegExp","FONT_STYLE","toLineHeight","numberOrZero","_readValueToProps","objProps","read","toTRBL","toTRBLCorners","toPadding","toFont","fallback","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","getOwnPropertyDescriptor","getPrototypeOf","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","_resolveWithContext","allKeys","ownKeys","scriptable","indexable","_allKeys","isScriptable","isIndexable","readKey","needsSubResolver","constructor","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","getStyle","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","normalize","normalizeSegment","getSegment","segment","bounds","startBound","endBound","_boundSegment","prevValue","inside","subStart","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","solidSegments","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","_getAnims","acc","_duration","cancel","animator","interpolators","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","_properties","configure","animatedProps","getOwnPropertyNames","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","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","custom","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","getter","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","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","z","gz","getSortedVisibleDatasetMetas","axisID","fontSize","isPrototypeOf","parentScope","isIChartComponent","registerDefaults","itemDefaults","routeDefaults","routes","propertyParts","sourceName","sourceScope","controllers","_typedRegistries","_each","_get","typedRegistry","reg","_getRegistryForType","isForType","_exec","itemReg","registry","camelMethod","getElement","DateAdapter","timestamp","unit","weekday","members","adapters","_date","binarySearch","metaset","lookupMethod","getRange","evaluateInteractionItems","getDistanceMetricForAxis","useX","useY","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","getAttribute","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","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","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","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","binding","startTime","maxIntervals","button","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","mask","i18nSettings","literals","$0","$1","dateStr","dateInfo","parseInfo","newFormat","UTC","broadcast","$children","stripe","isHidden","scrollX","scrollY","isComplex","tableSize","handleMouseLeave","showHeader","handleHeaderFooterMousewheel","bodyWidth","defaultSort","scrollPosition","bodyHeight","rowClassName","rowStyle","highlightCurrentRow","emptyBlockStyle","emptyText","append","showSummary","sumText","summaryMethod","fixedColumns","handleFixedMousewheel","fixedWidth","fixedHeight","headerHeight","fixedBodyHeight","appendHeight","rightFixedColumns","rightFixedWidth","gutterWidth","resizeProxyVisible","isFirefox","mousewheel","defaultExpandAll","expandRows","updateExpandRows","expandRowsMap","rowId","rowInfo","setExpandRowKeys","rowKeys","assertRowKey","keysMap","isRowExpanded","expandMap","_currentRowKey","currentRow","setCurrentRowKey","setCurrentRowByKey","restoreCurrentRowKey","updateCurrentRow","oldCurrentRow","updateCurrentRowData","currentRowKey","expandRowKeys","treeData","lazyTreeNodeMap","lazyColumnIdentifier","childrenColumnName","normalizedData","normalizedLazyNode","parentId","updateTreeData","nested","newTreeData","oldTreeData","rootLazyRowKeys","getExpanded","lazyKeys","lazyNodeChildren","updateTableScrollY","updateTreeExpandKeys","toggleTreeExpansion","oldExpanded","loadData","load","rawTreeData","sortData","sortingColumn","sortProp","sortOrder","doFlattenColumns","extend","_columns","originColumns","leafColumns","fixedLeafColumns","rightFixedLeafColumns","leafColumnsLength","fixedLeafColumnsLength","rightFixedLeafColumnsLength","selectOnIndeterminate","hoverRow","tree","notFixedColumns","needUpdateColumns","debouncedUpdateLayout","clearSelection","oldSelection","cleanSelection","deleted","selectedMap","dataMap","newSelection","toggleRowSelection","_toggleAllSelection","selectionChanged","updateSelectionByRowKey","updateAllSelected","selectedCount","isRowSelectable","updateFilters","updateSort","execFilter","execSort","execQuery","ignore","clearFilter","columnKeys","tableHeader","fixedTableHeader","rightFixedTableHeader","filterPanels","silent","multi","clearSort","setExpandRowKeysAdapter","toggleRowExpansionAdapter","hasExpandColumn","Watcher","setData","dataInstanceChanged","insertColumn","$ready","removeColumn","changeSortCondition","ingore","filterChange","newFilters","rowSelectedChanged","setHoverRow","setCurrentRow","nextTick","updateScrollY","createStore","initialState","Store","mapStates","mapper","TableLayout","observers","tableHeight","footerHeight","viewportHeight","scrollbarWidth","bodyWrapper","prevScrollY","setHeight","updateElsHeight","setMaxHeight","getFlattenColumns","flattenColumns","headerWrapper","appendWrapper","footerWrapper","headerTrElm","noneHeader","headerDisplayNone","notifyObservers","elm","headerChild","parentElement","updateColumnsWidth","bodyMinWidth","flexColumns","scrollYWidth","totalFlexWidth","allColumnsWidth","flexWidthPerPixel","noneFirstWidth","flexWidth","resizeState","addObserver","removeObserver","onColumnsChange","onScrollableChange","openDelay","manual","effect","enterable","hideAfter","tooltipId","generateId","timeoutPending","focusing","popperVM","debounceClose","handleClosePopper","mouseleave","setExpectedState","mouseenter","showPopper","firstElement","getFirstElement","addTooltipClass","referenceElm","nodeType","instance","handleBlur","removeFocusing","addClass","removeClass","handleShowPopper","expectedState","slots","off","tableLayout","__updated__","cols","columnsMap","ths","th","firstDefaultColumnIndex","treeRowData","treeIndent","columnsHidden","rowspan","colspan","getSpan","columnData","getColspanRealWidth","getCellClass","handleCellMouseEnter","handleCellMouseLeave","_renderProxy","LayoutObserver","ElTooltip","TableRow","highlight","wrappedRowRender","tooltipEffect","tooltipContent","leftFixedLeafCount","rightFixedLeafCount","columnsCount","leftFixedCount","rightFixedCount","isColumnHidden","raf","oldRow","newRow","activateTooltip","getKeyOfRow","spanMethod","getRowStyle","getRowClass","cellStyle","widthArr","hoverState","cellChild","childNodes","createRange","setStart","setEnd","rangeWidth","scrollWidth","popper","oldHoverState","handleContextMenu","handleDoubleClick","rowRender","rowClasses","displayStyle","$vnode","tr","traverse","innerTreeRowData","childKey","nodes","multiple","handleOutsideClick","handleReset","filterValue","handleSelect","dropdowns","dropdown","ElCheckboxGroup","confirmFilter","Dropdown","popperJS","_popper","zIndex","PopupManager","nextZIndex","getAllColumns","convertToRows","maxLevel","colSpan","subColumn","allColumns","rowSpan","columnRows","hasGutter","getHeaderRowStyle","getHeaderRowClass","handleMouseOut","handleMouseDown","handleHeaderClick","handleHeaderContextMenu","getHeaderCellStyle","getHeaderCellClass","handleSortClick","handleFilterClick","isCellHidden","headerRowStyle","headerRowClassName","headerCellStyle","headerCellClassName","filterPanel","FilterPanel","draggingColumn","dragging","tableEl","tableLeft","columnEl","columnRect","minLeft","dragState","startMouseLeft","startLeft","startColumnLeft","resizeProxy","onselectstart","ondragstart","deltaLeft","proxyLeft","handleMouseUp","finalLeft","columnWidth","bodyStyle","pageX","toggleOrder","givenOrder","sums","precisions","notNumber","getRowClasses","tableIdSeed","Migrating","Mousewheel","treeProps","hasChildren","TableHeader","TableFooter","TableBody","getMigratingConfig","currentScrollTop","scrollHeight","scrollLeft","syncPostion","fixedBodyWrapper","rightFixedBodyWrapper","maxScrollLeftPosition","throttleSyncPostion","throttle","onScroll","resizeListener","shouldUpdateLayout","oldWidth","oldHeight","shouldUpdateHeight","doLayout","tableData","Table"],"mappings":"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","file":"js/chunk-70cf6bca.66b518fa.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","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\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!./DashboardSidebarLinks.vue?vue&type=style&index=0&id=f3c60c50&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dashboard-layout-title\"},[_c('div',{staticClass:\"headline-2 dashboard-layout-title__left\"},[_vm._t(\"default\",function(){return [_vm._v(_vm._s(_vm.title))]})],2),_c('div',{staticClass:\"dashboard-layout-title__right\"},[_vm._t(\"right\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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!./DashboardTitle.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!./DashboardTitle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardTitle.vue?vue&type=template&id=4b73f0b4&scoped=true&\"\nimport script from \"./DashboardTitle.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardTitle.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardTitle.vue?vue&type=style&index=0&id=4b73f0b4&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 \"4b73f0b4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"profile-router-link\",class:{'profile-router-link_active': _vm.$route.name === 'profile'}},[_c('div',{staticClass:\"profile-router-link__inner\"},[_c('div',{staticClass:\"profile-router-link__inner-left\"},[(_vm.role === 'streamer')?_c('div',{staticClass:\"profile-router-link__userpic\",style:(`background-image: url(${_vm.avatar})`)}):_c('div',{staticClass:\"text-m-bold profile-router-link__initials\"},[_vm._v(\" \"+_vm._s(_vm.initials)+\" \")])]),_c('div',{staticClass:\"profile-router-link__inner-right\"},[_c('div',{staticClass:\"text-s-regular profile-router-link__nickname\"},[_vm._v(\" \"+_vm._s(_vm.name)+\" \")]),_c('div',{staticClass:\"text-caption-caps\"},[_vm._v(\" \"+_vm._s(_vm.role)+\" \")])]),_c('SvgIcon',{attrs:{\"name\":\"chevron-right\",\"width\":\"16\",\"height\":\"16\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\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!./ProfileRouterLink.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!./ProfileRouterLink.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ProfileRouterLink.vue?vue&type=template&id=ab2d3d7c&scoped=true&\"\nimport script from \"./ProfileRouterLink.vue?vue&type=script&lang=js&\"\nexport * from \"./ProfileRouterLink.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ProfileRouterLink.vue?vue&type=style&index=0&id=ab2d3d7c&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 \"ab2d3d7c\",\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!./CategoriesPerformance.vue?vue&type=style&index=0&id=5c13984e&prod&lang=scss&scoped=true&\"","\"use strict\";function _extends(){return _extends=Object.assign?Object.assign.bind():function(a){for(var b,c=1;c ({\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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"dashboard-layout\",class:{ 'dashboard-layout_top-shifted': _vm.$store.getters.alert }},[_c(_setup.DashboardSidebar),_c('div',{staticClass:\"dashboard-layout__content\",class:{\n 'dashboard-layout__content_full': _vm.fullWidth,\n 'dashboard-layout__content_center': _vm.centered,\n }},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dashboard-sidebar\",class:{'dashboard-sidebar_menu-active': _vm.menuActive}},[_c('div',{staticClass:\"dashboard-sidebar__top\"},[_c('DashboardSidebarLogo'),_c('button',{staticClass:\"dashboard-sidebar__menu-btn\",on:{\"click\":_vm.toggleMenu}},[_c('SvgIcon',{attrs:{\"name\":!_vm.menuActive ? 'menu-icon' :'close-menu-icon',\"width\":\"24px\",\"height\":\"24px\"}})],1)],1),_c('div',{staticClass:\"dashboard-sidebar__content\"},[_c('DashboardSidebarNav',{attrs:{\"toggle-menu\":_vm.toggleMenu}}),_c('div',{staticClass:\"dashboard-sidebar__bottom\"},[(_vm.$isPartner)?_c('DashboardRequestDemo'):_vm._e(),_c('DashboardSidebarProfile',{attrs:{\"toggle-menu\":_vm.toggleMenu}}),_c('div',{staticClass:\"dashboard-sidebar__separator dashboard-sidebar__separator_profile\"}),_c('DashboardSidebarLinks'),_c('div',{staticClass:\"dashboard-sidebar__separator\"}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.$isMobile),expression:\"!$isMobile\"}]},[_c('DashboardSidebarSocials'),_c('div',{staticClass:\"dashboard-sidebar__separator\"})],1),_c('div',{staticClass:\"dashboard-sidebar__footer\"},[_c('LocaleSwitcher'),_c('DashboardLogoutButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$isMobile),expression:\"$isMobile\"}]})],1)],1)],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dashboard-sidebar-logout\",on:{\"click\":_vm.logout}},[_c('SvgIcon',{staticClass:\"dashboard-sidebar-logout__icon\",attrs:{\"name\":\"logout\",\"width\":\"16px\",\"height\":\"16px\"}}),_c('span',{staticClass:\"text-s-regular dashboard-sidebar-logout__label\"},[_vm._v(\" \"+_vm._s(_vm.$t('sidebar.navigation.profile.logout'))+\" \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\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!./DashboardLogoutButton.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!./DashboardLogoutButton.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardLogoutButton.vue?vue&type=template&id=a028595e&scoped=true&\"\nimport script from \"./DashboardLogoutButton.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardLogoutButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardLogoutButton.vue?vue&type=style&index=0&id=a028595e&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 \"a028595e\",\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:\"dashboard-request-demo\"},[_c(_setup.ElButton,{attrs:{\"type\":\"primary\",\"size\":\"medium\",\"plain\":\"\"},on:{\"click\":_setup.onClick}},[_vm._v(\" \"+_vm._s(_setup.locale)+\" \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\n\nimport { useRootLocale } from 'lib/helpers/useLocale'\n\nimport ElButton from 'element/ElButton'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'DashboardRequestDemo',\n setup(__props) {\n\nconst locale = computed(() => useRootLocale('sidebar.requestDemo'))\n\nconst onClick = () => {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.log('Intercom message', locale.value)\n return\n }\n // @ts-expect-error\n window?.Intercom('showNewMessage', locale.value)\n}\n\nreturn { __sfc: true,locale, onClick, 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!./DashboardRequestDemo.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!./DashboardRequestDemo.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardRequestDemo.vue?vue&type=template&id=362ca3bb&scoped=true&\"\nimport script from \"./DashboardRequestDemo.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./DashboardRequestDemo.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./DashboardRequestDemo.vue?vue&type=style&index=0&id=362ca3bb&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 \"362ca3bb\",\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:\"dashboard-sidebar-links\"},_vm._l((_setup.items),function(item){return _c('div',{key:item.key,staticClass:\"dashboard-sidebar-links__item\"},[_c('a',{staticClass:\"dashboard-sidebar-links__item-link\",class:item.classes,attrs:{\"href\":_setup.getLink(item.name),\"target\":\"_blank\"}},[_c('SvgIcon',{staticClass:\"dashboard-sidebar-links__item-icon\",attrs:{\"name\":item.icon,\"width\":item.width || '16px',\"height\":item.height || '16px'}}),_c('span',{staticClass:\"text-s-regular dashboard-sidebar-links__item-label\"},[_vm._v(\" \"+_vm._s(_setup.locale.links[item.name]?.label || item.label)+\" \")])],1)])}),0)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, onMounted } from 'vue'\n\nimport { vm } from '@/main'\nimport { useRootLocaleObj } from 'lib/helpers/useLocale'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'DashboardSidebarLinks',\n setup(__props) {\n\nconst locale = computed(() => ({\n links: useRootLocaleObj('sidebar.links'),\n}))\n\nconst domain = computed(() => vm.$store.getters['auth/domain'])\nconst items = computed(() => {\n if (!vm.$isMobile) {\n return [\n {\n name: 'discord',\n icon: 'discord-icon',\n hide: vm.$isPartner,\n height: '15px',\n },\n {\n name: 'help',\n icon: 'circle-question',\n },\n {\n name: 'news',\n icon: 'star',\n height: '15px',\n classes: 'beamerTrigger',\n url: locale.value.links.whatsNew,\n },\n {\n name: 'feedback',\n icon: 'dialog-bubbles',\n height: '16px',\n },\n ].filter(item => !item.hide)\n }\n\n return [\n {\n name: 'discord',\n icon: 'discord-icon',\n hide: vm.$isPartner,\n height: '15px',\n key: 'discord',\n },\n {\n name: 'news',\n icon: 'star',\n height: '15px',\n classes: 'beamerTrigger',\n url: locale.value.links.whatsNew,\n },\n {\n name: 'help',\n icon: 'circle-question',\n },\n {\n link: 'https://twitter.com/TryUplify',\n name: 'twitter',\n icon: 'twitter-icon',\n label: 'Twitter',\n },\n {\n name: 'feedback',\n icon: 'dialog-bubbles',\n height: '16px',\n key: 'feedback',\n },\n {\n link: 'https://www.facebook.com/TryUplify',\n name: 'facebook',\n icon: 'facebook-icon',\n label: 'Facebook',\n width: '17px',\n height: '17px',\n },\n ].filter(item => !item.hide)\n})\n\nconst getLink = (name: string) => {\n if (name === 'discord' && domain.value === 'streamo') {\n return 'https://discord.gg/hpU9m9QCEU'\n }\n return locale.value.links[name]?.url\n}\n\nonMounted(() => {\n window.beamer_config.language = vm.$root.$i18n.locale\n})\n\nreturn { __sfc: true,locale, domain, items, getLink }\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!./DashboardSidebarLinks.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!./DashboardSidebarLinks.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./DashboardSidebarLinks.vue?vue&type=template&id=f3c60c50&scoped=true&\"\nimport script from \"./DashboardSidebarLinks.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./DashboardSidebarLinks.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./DashboardSidebarLinks.vue?vue&type=style&index=0&id=f3c60c50&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 \"f3c60c50\",\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 (!_setup.user.deleted_request)?_c('ul',{staticClass:\"dashboard-sidebar-nav\"},_vm._l((_setup.navigation),function(item){return _c('li',{key:item.name,staticClass:\"dashboard-sidebar-nav__item\",on:{\"click\":_vm.toggleMenu}},[(item.name === 'freemium' && !_setup.user.freemium_active)?_c('div',{staticClass:\"dashboard-sidebar-nav__item-link _beta\",on:{\"click\":_setup.onFreemiumClick}},[_c('div',{staticClass:\"dashboard-sidebar-nav__item-icon\"},[_c('SvgIcon',{attrs:{\"name\":item.icon.name,\"width\":item.icon.width,\"height\":item.icon.height}})],1),_c('div',{staticClass:\"dashboard-sidebar-nav__item-label\"},[_vm._v(\" \"+_vm._s(_vm.$t(`sidebar.navigation.${_setup.role}.${item.name}.title`))+\" \")]),_c('div',{staticClass:\"dashboard-sidebar-nav__item-tag\"},[_vm._v(\" BETA \")])]):[_c(_setup.Link,{attrs:{\"item\":item}},[_c('div',{staticClass:\"dashboard-sidebar-nav__item-icon\"},[_c('SvgIcon',{attrs:{\"name\":item.icon.name,\"width\":item.icon.width,\"height\":item.icon.height}})],1),_c('div',{staticClass:\"dashboard-sidebar-nav__item-label\"},[_vm._v(\" \"+_vm._s(_vm.$t(`sidebar.navigation.${_setup.role}.${item.name}.title`))+\" \")])])],(_setup.hasActiveSubitems(_vm.$route.name, item))?_c('ul',{staticClass:\"dashboard-sidebar-nav__submenu\"},_vm._l((item.subitems),function(subitem){return _c('li',{key:subitem.name,staticClass:\"dashboard-sidebar-nav__subitem\"},[(_setup.isSubItemVisible(subitem.name))?_c('router-link',{staticClass:\"dashboard-sidebar-nav__subitem-link\",class:{'dashboard-sidebar-nav__subitem-link-active': _setup.hasActiveSubitems(_vm.$route.name, subitem)},attrs:{\"to\":{name: subitem.name, params: subitem.params},\"exact\":\"\"}},[_c('div',{staticClass:\"dashboard-sidebar-nav__subitem-label\"},[_vm._v(\" \"+_vm._s(_vm.$t(`sidebar.navigation.${_setup.role}.${item.name}.subitems.${subitem.name}`))+\" \")])]):_vm._e()],1)}),0):_vm._e()],2)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.item.path)?_c('router-link',{staticClass:\"dashboard-sidebar-nav__item-link\",class:{\n 'dashboard-sidebar-nav__item-link-active': _setup.isActive(_vm.$route.name, _vm.item),\n 'dashboard-sidebar-nav__item-link-has-actives': _setup.hasActiveSubitems(_vm.$route.name, _vm.item),\n },attrs:{\"to\":{\n name: _vm.item.subitems?.length ? _vm.item.subitems[0].name : _vm.item.name,\n params: _vm.item.params && _vm.item.params\n },\"exact\":\"\"}},[_vm._t(\"default\")],2):_c('a',{staticClass:\"dashboard-sidebar-nav__item-link\",class:{\n 'dashboard-sidebar-nav__item-link-active': _setup.isActive(_vm.$route.name, _vm.item),\n 'dashboard-sidebar-nav__item-link-has-actives': _setup.hasActiveSubitems(_vm.$route.name, _vm.item),\n },attrs:{\"href\":_vm.item.path,\"exact\":\"\"}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport parseSlug from 'lib/helpers/parseSlug'\nimport { useRouter } from 'lib/helpers/useRouter'\n\nimport { TNavigationItem, TNavigationSubItem } from './navigationList'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Link',\n props: {\n item: null\n },\n setup(__props: any) {\n\nconst router = useRouter()\n\n\n\nconst isActive = (routeName: string | null | undefined, item: TNavigationItem | TNavigationSubItem) => {\n if (routeName === 'campaign-analytics' && item.name === 'campaigns') {\n return true\n }\n\n return routeName === item.name\n}\n\nconst hasActiveSubitems = (routeName: string | null | undefined, item: TNavigationItem | TNavigationSubItem) => {\n if (!routeName) return false\n\n if ('subitems' in item && item.subitems?.length) {\n if (routeName === 'analytics') {\n const { type } = parseSlug(router.currentRoute.params.campaignSlug)\n if (type === 'brand_awareness' && item.subitems?.find(link => link.name === 'brand-awareness')) {\n return true\n }\n if (type === 'performance' && item.subitems?.find(link => link.name === 'performance')) {\n return true\n }\n }\n\n const isActive = item.subitems?.find(link => link.nestedRoutes.includes(routeName))\n\n return !!isActive\n }\n\n if ('nestedRoutes' in item && item.nestedRoutes?.length) {\n if (routeName === 'analytics') {\n const { type } = parseSlug(router.currentRoute.params.campaignSlug)\n if (type === 'brand_awareness' && item.name === 'brand-awareness') {\n return true\n }\n if (type === 'performance' && item.name === 'performance') {\n return true\n }\n }\n\n return item.nestedRoutes.includes(routeName)\n }\n\n return false\n}\n\nreturn { __sfc: true,router, isActive, hasActiveSubitems }\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!./Link.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!./Link.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Link.vue?vue&type=template&id=4921a787&scoped=true&\"\nimport script from \"./Link.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Link.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Link.vue?vue&type=style&index=0&id=4921a787&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 \"4921a787\",\n null\n \n)\n\nexport default component.exports","export type TNavigationSubItem = {\n name: string\n icon?: {\n name: string\n width: string\n height: string\n }\n params?: any\n routeName: string\n nestedRoutes?: string[]\n}\n\nexport type TNavigationItem = {\n name: string\n path?: string\n inBeta?: boolean\n icon: {\n name: string\n width: string\n height: string\n }\n locale?: string[]\n params?: any\n subitems?: TNavigationSubItem[]\n}\n\ntype TNavigationList = {\n streamer: TNavigationItem[]\n partner: TNavigationItem[]\n}\n\nexport const navigationList: TNavigationList = {\n streamer: [\n {\n name: 'dashboard',\n path: window.location.origin + '/dashboard',\n icon: {\n name: 'home',\n width: '16px',\n height: '16px',\n },\n },\n {\n name: 'freemium',\n inBeta: true,\n icon: {\n name: 'heart',\n width: '18px',\n height: '16px',\n },\n },\n {\n name: 'campaigns',\n icon: {\n name: 'creative',\n width: '18px',\n height: '14px',\n },\n subitems: [\n {\n name: 'campaigns-livestream',\n routeName: 'campaigns-livestream',\n nestedRoutes: ['campaigns-livestream'],\n },\n {\n name: 'campaigns-preroll',\n routeName: 'campaigns-preroll',\n nestedRoutes: ['campaigns-preroll'],\n },\n ],\n },\n {\n name: 'referrals',\n path: window.location.origin + '/v3/referrals',\n icon: {\n name: 'star-referrals',\n width: '18px',\n height: '18px',\n },\n },\n {\n name: 'wallet',\n path: window.location.origin + '/wallet',\n icon: {\n name: 'wallet',\n width: '17px',\n height: '17px',\n },\n },\n // {\n // name: 'extension',\n // icon: {\n // name: 'extension',\n // width: '18px',\n // height: '18px',\n // },\n // },\n {\n name: 'widget',\n path: window.location.origin + '/widget',\n icon: {\n name: 'gear',\n width: '18px',\n height: '18px',\n },\n },\n ],\n partner: [\n {\n name: 'campaigns',\n icon: {\n name: 'creative',\n width: '18px',\n height: '15px',\n },\n subitems: [\n {\n name: 'brand-awareness',\n routeName: 'brand-awareness-campaigns',\n nestedRoutes: ['brand-awareness-campaigns', 'brand-awareness-groups', 'brand-awareness-creatives'],\n },\n {\n name: 'performance',\n routeName: 'performance-campaigns',\n nestedRoutes: ['performance-campaigns', 'performance-groups'],\n },\n {\n name: 'preroll',\n routeName: 'preroll-campaigns',\n nestedRoutes: ['preroll-campaigns', 'preroll-groups'],\n },\n ],\n },\n {\n name: 'advertisers',\n icon: {\n name: 'wallet',\n width: '15px',\n height: '15px',\n },\n },\n {\n name: 'creators',\n icon: {\n name: 'star-referrals',\n width: '15px',\n height: '15px',\n },\n },\n ],\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, onMounted, reactive, ref, watch } from 'vue'\n\nimport { vm } from '@/main'\nimport parseSlug from 'lib/helpers/parseSlug'\nimport { useRouter } from 'lib/helpers/useRouter'\n\nimport Link from './Link.vue'\nimport { navigationList as navigationListStatic, TNavigationItem, TNavigationSubItem } from './navigationList'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n toggleMenu: null\n },\n setup(__props: any) {\n\n\n\nconst router = useRouter()\nconst navigationList = reactive(navigationListStatic)\nconst youtube = computed(() => vm.$store.state.auth.youtube)\nconst user = computed(() => vm.$store.getters['auth/user'])\nconst widget = computed(() => vm.$store.getters['widgetSettings/widget'])\nconst debugActive = computed(() => vm.$store.getters['auth/debugActive'])\nconst role = computed<'streamer' | 'partner'>(() => vm.$store.getters['auth/role'])\nconst navigation = computed(() => {\n return navigationList[role.value].filter(item => {\n if (item.locale) {\n return item.locale.includes(vm.$root.$i18n.locale)\n }\n return item\n })\n})\nconst debugAdded = ref(false)\n\nconst onFreemiumClick = () => {\n // @ts-expect-error\n window?.Intercom('showNewMessage', vm.$t('intercom.freemium'))\n}\n\nconst addPartnerDebug = () => {\n const nav = navigationList.partner\n if (nav.find(item => item.name === 'debug')) return\n navigationList.partner.push({\n name: 'debug',\n icon: {\n name: 'wrench-gear',\n width: '16px',\n height: '16px',\n },\n })\n}\n\nconst addStreamerDebug = () => {\n const nav = navigationList.streamer\n if (nav.find(item => item.name === 'debug')) return\n\n const loadWidget = setInterval(() => {\n if (widget.value._bootstrapped) {\n navigationList.streamer.push({\n name: 'debug',\n params: {\n apiVersion: 'v1',\n slug: widget.value.slug,\n },\n icon: {\n name: 'wrench-gear',\n width: '16px',\n height: '16px',\n },\n })\n clearInterval(loadWidget)\n }\n }, 100)\n}\n\nconst isActive = (routeName: string | null | undefined, item: TNavigationItem | TNavigationSubItem) => {\n if (routeName === 'campaign-analytics' && item.name === 'campaigns') {\n return true\n }\n\n return routeName === item.name\n}\n\nconst hasActiveSubitems = (routeName: string | null | undefined, item: TNavigationItem | TNavigationSubItem) => {\n if (!routeName) return false\n\n if ('subitems' in item && item.subitems?.length) {\n if (routeName === 'analytics') {\n const { type } = parseSlug(router.currentRoute.params.campaignSlug)\n if (type === 'brand_awareness' && item.subitems?.find(link => link.name === 'brand-awareness')) {\n return true\n }\n if (type === 'performance' && item.subitems?.find(link => link.name === 'performance')) {\n return true\n }\n if (type === 'preroll' && item.subitems?.find(link => link.name === 'preroll')) {\n return true\n }\n }\n\n const isActive = item.subitems?.find(link => link?.nestedRoutes?.includes(routeName))\n\n return !!isActive\n }\n\n if ('nestedRoutes' in item && item.nestedRoutes?.length) {\n if (routeName === 'analytics') {\n const { type } = parseSlug(router.currentRoute.params.campaignSlug)\n if (type === 'brand_awareness' && item.name === 'brand-awareness') {\n return true\n }\n if (type === 'performance' && item.name === 'performance') {\n return true\n }\n if (type === 'preroll' && item.name === 'preroll') {\n return true\n }\n }\n\n return item?.nestedRoutes.includes(routeName)\n }\n\n return false\n}\n\nconst isSubItemVisible = (item: string) => {\n if (role.value === 'streamer' && item === 'campaigns-preroll') {\n // if (widget.value.platform !== 'youtube' || !user.value.vod_active) {\n // if (!youtube.value || !user.value.vod_active) {\n // return false\n // }\n }\n\n return true\n}\n\nconst configureMenu = () => {\n if (debugActive.value) {\n if (role.value === 'streamer' && !debugAdded.value) {\n addStreamerDebug()\n debugAdded.value = true\n }\n if (role.value === 'partner' && !debugAdded.value) {\n addPartnerDebug()\n debugAdded.value = true\n }\n }\n}\n\nonMounted(configureMenu)\n\nwatch(role, configureMenu)\nwatch(user, configureMenu)\n\nreturn { __sfc: true,router, navigationList, youtube, user, widget, debugActive, role, navigation, debugAdded, onFreemiumClick, addPartnerDebug, addStreamerDebug, isActive, hasActiveSubitems, isSubItemVisible, configureMenu, Link }\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=8d555766&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=8d555766&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 \"8d555766\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (!_vm.$isMobile)?_c('ElPopover',{staticClass:\"sidebar-profile\",attrs:{\"placement\":\"left-start\",\"visible-arrow\":false,\"trigger-click\":\"\"},model:{value:(_vm.visiblePopover),callback:function ($$v) {_vm.visiblePopover=$$v},expression:\"visiblePopover\"}},[_c('ProfileRouterLink',{attrs:{\"slot\":\"reference\"},slot:\"reference\"}),_c('ProfileLinks',{on:{\"click\":function($event){_vm.visiblePopover = false}}})],1):_c('div',{staticClass:\"sidebar-profile\",on:{\"click\":_vm.onProfileClick}},[_c('ProfileRouterLink',{attrs:{\"slot\":\"reference\"},slot:\"reference\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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!./index.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!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=6bff9e9f&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dashboard-sidebar-socials\"},[_c('div',{staticClass:\"text-s-regular dashboard-sidebar-socials__title\"},[_vm._v(\" \"+_vm._s(_vm.locale.title)+\" \")]),_c('div',{staticClass:\"dashboard-sidebar-socials__items\"},_vm._l((_vm.items),function(item){return _c('a',{key:item.name,staticClass:\"dashboard-sidebar-socials__item\",attrs:{\"href\":item.link,\"target\":\"_blank\"}},[_c('SvgIcon',{attrs:{\"name\":`${item.name}-icon`,\"width\":item.width || '16px',\"height\":item.height || '16px'}})],1)}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\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!./DashboardSidebarSocials.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!./DashboardSidebarSocials.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DashboardSidebarSocials.vue?vue&type=template&id=3218a19d&scoped=true&\"\nimport script from \"./DashboardSidebarSocials.vue?vue&type=script&lang=js&\"\nexport * from \"./DashboardSidebarSocials.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DashboardSidebarSocials.vue?vue&type=style&index=0&id=3218a19d&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 \"3218a19d\",\n null\n \n)\n\nexport default component.exports","\n\n\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!./index.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!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=31b7ba5b&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=31b7ba5b&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 \"31b7ba5b\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport DashboardSidebar from 'components/layouts/DashboardLayout/components/DashboardSidebar/index.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n fullWidth: { type: Boolean, default: false },\n centered: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\n\n\nreturn { __sfc: true,DashboardSidebar }\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=94cc7f08&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=94cc7f08&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 \"94cc7f08\",\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!./index.vue?vue&type=style&index=0&id=31b7ba5b&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"profile-links\",on:{\"click\":function($event){return _vm.$emit('click')}}},[(!_setup.user.deleted_request)?_c('a',{staticClass:\"profile-links__item\",attrs:{\"href\":_setup.role === 'streamer' ? '/profile' : '/partner/profile'}},[_c('SvgIcon',{staticClass:\"profile-links__item-icon\",attrs:{\"name\":\"user\",\"width\":\"16px\",\"height\":\"16px\"}}),_c('div',{staticClass:\"text-m-regular profile-links__item-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('sidebar.navigation.profile.settings'))+\" \")])],1):_vm._e(),_c('div',{staticClass:\"profile-links__item\",on:{\"click\":_setup.removeToken}},[_c('SvgIcon',{staticClass:\"profile-links__item-icon\",attrs:{\"name\":\"logout\",\"width\":\"16px\",\"height\":\"16px\"}}),_c('div',{staticClass:\"text-m-regular profile-links__item-label\"},[_vm._v(\" \"+_vm._s(_vm.$t('sidebar.navigation.profile.logout'))+\" \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue'\n\nimport { vm } from '@/main'\nimport { removeToken } from 'lib/helpers/authToken'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProfileLinks',\n setup(__props) {\n\nconst user = computed(() => vm.$store.getters['auth/user'])\nconst role = computed(() => vm.$store.getters['auth/role'])\n\nreturn { __sfc: true,user, role, removeToken }\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!./ProfileLinks.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!./ProfileLinks.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ProfileLinks.vue?vue&type=template&id=8723bffe&scoped=true&\"\nimport script from \"./ProfileLinks.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ProfileLinks.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./ProfileLinks.vue?vue&type=style&index=0&id=8723bffe&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 \"8723bffe\",\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!./CreatorsTable.vue?vue&type=style&index=0&id=2ad5ff6e&prod&lang=scss&scoped=true&\"","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\n// IE8-\nvar INCORRECT_RESULT = [].unshift(0) !== 1;\n\n// V8 ~ Chrome < 71 and Safari <= 15.4, FF < 23 throws InternalError\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).unshift();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_RESULT || !properErrorOnNonWritableLength();\n\n// `Array.prototype.unshift` method\n// https://tc39.es/ecma262/#sec-array.prototype.unshift\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n unshift: function unshift(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n if (argCount) {\n doesNotExceedSafeInteger(len + argCount);\n var k = len;\n while (k--) {\n var to = k + argCount;\n if (k in O) O[to] = O[k];\n else deletePropertyOrThrow(O, to);\n }\n for (var j = 0; j < argCount; j++) {\n O[j] = arguments[j];\n }\n } return setArrayLength(O, len + argCount);\n }\n});\n","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","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!./DashboardSidebarSocials.vue?vue&type=style&index=0&id=3218a19d&prod&lang=scss&scoped=true&\"","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","\n\n\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!./Tabs.vue?vue&type=style&index=0&id=70fc54c0&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!./DashboardRequestDemo.vue?vue&type=style&index=0&id=362ca3bb&prod&lang=scss&scoped=true&\"","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","import { getPropByPath } from 'element-ui/src/utils/util';\n\nexport const cellStarts = {\n default: {\n order: ''\n },\n selection: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: '',\n className: 'el-table-column--selection'\n },\n expand: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: ''\n },\n index: {\n width: 48,\n minWidth: 48,\n realWidth: 48,\n order: ''\n }\n};\n\n// 这些选项不应该被覆盖\nexport const cellForced = {\n selection: {\n renderHeader: function(h, { store }) {\n return 0 && !this.isAllSelected }\n on-input={ this.toggleAllSelection }\n value={ this.isAllSelected } />;\n },\n renderCell: function(h, { row, column, isSelected, store, $index }) {\n return event.stopPropagation() }\n value={ isSelected }\n disabled={ column.selectable ? !column.selectable.call(null, row, $index) : false }\n on-input={ () => { store.commit('rowSelectedChanged', row); } }\n />;\n },\n sortable: false,\n resizable: false\n },\n index: {\n renderHeader: function(h, { column }) {\n return column.label || '#';\n },\n renderCell: function(h, { $index, column }) {\n let i = $index + 1;\n const index = column.index;\n\n if (typeof index === 'number') {\n i = $index + index;\n } else if (typeof index === 'function') {\n i = index($index);\n }\n\n return
{ i }
;\n },\n sortable: false\n },\n expand: {\n renderHeader: function(h, { column }) {\n return column.label || '';\n },\n renderCell: function(h, { row, store, isExpanded }) {\n const classes = ['el-table__expand-icon'];\n if (isExpanded) {\n classes.push('el-table__expand-icon--expanded');\n }\n const callback = function(e) {\n e.stopPropagation();\n store.toggleRowExpansion(row);\n };\n return (
\n \n
);\n },\n sortable: false,\n resizable: false,\n className: 'el-table__expand-column'\n }\n};\n\nexport function defaultRenderCell(h, { row, column, $index }) {\n const property = column.property;\n const value = property && getPropByPath(row, property).v;\n if (column && column.formatter) {\n return column.formatter(row, column, value, $index);\n }\n return value;\n}\n\nexport function treeCellPrefix(h, { row, treeNode, store }) {\n if (!treeNode) return null;\n const ele = [];\n const callback = function(e) {\n e.stopPropagation();\n store.loadOrToggle(row);\n };\n if (treeNode.indent) {\n ele.push();\n }\n if (typeof treeNode.expanded === 'boolean' && !treeNode.noLazyChildren) {\n const expandClasses = ['el-table__expand-icon', treeNode.expanded ? 'el-table__expand-icon--expanded' : ''];\n let iconClasses = ['el-icon-arrow-right'];\n if (treeNode.loading) {\n iconClasses = ['el-icon-loading'];\n }\n ele.push(
\n \n
);\n } else {\n ele.push();\n }\n return ele;\n}\n","import { cellStarts, cellForced, defaultRenderCell, treeCellPrefix } from './config';\nimport { mergeOptions, parseWidth, parseMinWidth, compose } from './util';\nimport ElCheckbox from 'element-ui/packages/checkbox';\n\nlet columnIdSeed = 1;\n\nexport default {\n name: 'ElTableColumn',\n\n props: {\n type: {\n type: String,\n default: 'default'\n },\n label: String,\n className: String,\n labelClassName: String,\n property: String,\n prop: String,\n width: {},\n minWidth: {},\n renderHeader: Function,\n sortable: {\n type: [Boolean, String],\n default: false\n },\n sortMethod: Function,\n sortBy: [String, Function, Array],\n resizable: {\n type: Boolean,\n default: true\n },\n columnKey: String,\n align: String,\n headerAlign: String,\n showTooltipWhenOverflow: Boolean,\n showOverflowTooltip: Boolean,\n fixed: [Boolean, String],\n formatter: Function,\n selectable: Function,\n reserveSelection: Boolean,\n filterMethod: Function,\n filteredValue: Array,\n filters: Array,\n filterPlacement: String,\n filterMultiple: {\n type: Boolean,\n default: true\n },\n index: [Number, Function],\n sortOrders: {\n type: Array,\n default() {\n return ['ascending', 'descending', null];\n },\n validator(val) {\n return val.every(order => ['ascending', 'descending', null].indexOf(order) > -1);\n }\n }\n },\n\n data() {\n return {\n isSubColumn: false,\n columns: []\n };\n },\n\n computed: {\n owner() {\n let parent = this.$parent;\n while (parent && !parent.tableId) {\n parent = parent.$parent;\n }\n return parent;\n },\n\n columnOrTableParent() {\n let parent = this.$parent;\n while (parent && !parent.tableId && !parent.columnId) {\n parent = parent.$parent;\n }\n return parent;\n },\n\n realWidth() {\n return parseWidth(this.width);\n },\n\n realMinWidth() {\n return parseMinWidth(this.minWidth);\n },\n\n realAlign() {\n return this.align ? 'is-' + this.align : null;\n },\n\n realHeaderAlign() {\n return this.headerAlign ? 'is-' + this.headerAlign : this.realAlign;\n }\n },\n\n methods: {\n getPropsData(...props) {\n return props.reduce((prev, cur) => {\n if (Array.isArray(cur)) {\n cur.forEach((key) => {\n prev[key] = this[key];\n });\n }\n return prev;\n }, {});\n },\n\n getColumnElIndex(children, child) {\n return [].indexOf.call(children, child);\n },\n\n setColumnWidth(column) {\n if (this.realWidth) {\n column.width = this.realWidth;\n }\n if (this.realMinWidth) {\n column.minWidth = this.realMinWidth;\n }\n if (!column.minWidth) {\n column.minWidth = 80;\n }\n column.realWidth = column.width === undefined ? column.minWidth : column.width;\n return column;\n },\n\n setColumnForcedProps(column) {\n // 对于特定类型的 column,某些属性不允许设置\n const type = column.type;\n const source = cellForced[type] || {};\n Object.keys(source).forEach(prop => {\n let value = source[prop];\n if (value !== undefined) {\n column[prop] = prop === 'className' ? `${column[prop]} ${value}` : value;\n }\n });\n return column;\n },\n\n setColumnRenders(column) {\n // renderHeader 属性不推荐使用。\n if (this.renderHeader) {\n console.warn('[Element Warn][TableColumn]Comparing to render-header, scoped-slot header is easier to use. We recommend users to use scoped-slot header.');\n } else if (column.type !== 'selection') {\n column.renderHeader = (h, scope) => {\n const renderHeader = this.$scopedSlots.header;\n return renderHeader ? renderHeader(scope) : column.label;\n };\n }\n\n let originRenderCell = column.renderCell;\n // TODO: 这里的实现调整\n if (column.type === 'expand') {\n // 对于展开行,renderCell 不允许配置的。在上一步中已经设置过,这里需要简单封装一下。\n column.renderCell = (h, data) => (
\n { originRenderCell(h, data) }\n
);\n this.owner.renderExpanded = (h, data) => {\n return this.$scopedSlots.default\n ? this.$scopedSlots.default(data)\n : this.$slots.default;\n };\n } else {\n originRenderCell = originRenderCell || defaultRenderCell;\n // 对 renderCell 进行包装\n column.renderCell = (h, data) => {\n let children = null;\n if (this.$scopedSlots.default) {\n children = this.$scopedSlots.default(data);\n } else {\n children = originRenderCell(h, data);\n }\n const prefix = treeCellPrefix(h, data);\n const props = {\n class: 'cell',\n style: {}\n };\n if (column.showOverflowTooltip) {\n props.class += ' el-tooltip';\n props.style = {width: (data.column.realWidth || data.column.width) - 1 + 'px'};\n }\n return (
\n { prefix }\n { children }\n
);\n };\n }\n return column;\n },\n\n registerNormalWatchers() {\n const props = ['label', 'property', 'filters', 'filterMultiple', 'sortable', 'index', 'formatter', 'className', 'labelClassName', 'showOverflowTooltip'];\n // 一些属性具有别名\n const aliases = {\n prop: 'property',\n realAlign: 'align',\n realHeaderAlign: 'headerAlign',\n realWidth: 'width'\n };\n const allAliases = props.reduce((prev, cur) => {\n prev[cur] = cur;\n return prev;\n }, aliases);\n\n Object.keys(allAliases).forEach(key => {\n const columnKey = aliases[key];\n\n this.$watch(key, (newVal) => {\n this.columnConfig[columnKey] = newVal;\n });\n });\n },\n\n registerComplexWatchers() {\n const props = ['fixed'];\n const aliases = {\n realWidth: 'width',\n realMinWidth: 'minWidth'\n };\n const allAliases = props.reduce((prev, cur) => {\n prev[cur] = cur;\n return prev;\n }, aliases);\n\n Object.keys(allAliases).forEach(key => {\n const columnKey = aliases[key];\n\n this.$watch(key, (newVal) => {\n this.columnConfig[columnKey] = newVal;\n const updateColumns = columnKey === 'fixed';\n this.owner.store.scheduleLayout(updateColumns);\n });\n });\n }\n },\n\n components: {\n ElCheckbox\n },\n\n beforeCreate() {\n this.row = {};\n this.column = {};\n this.$index = 0;\n this.columnId = '';\n },\n\n created() {\n const parent = this.columnOrTableParent;\n this.isSubColumn = this.owner !== parent;\n this.columnId = (parent.tableId || parent.columnId) + '_column_' + columnIdSeed++;\n\n const type = this.type || 'default';\n const sortable = this.sortable === '' ? true : this.sortable;\n const defaults = {\n ...cellStarts[type],\n id: this.columnId,\n type: type,\n property: this.prop || this.property,\n align: this.realAlign,\n headerAlign: this.realHeaderAlign,\n showOverflowTooltip: this.showOverflowTooltip || this.showTooltipWhenOverflow,\n // filter 相关属性\n filterable: this.filters || this.filterMethod,\n filteredValue: [],\n filterPlacement: '',\n isColumnGroup: false,\n filterOpened: false,\n // sort 相关属性\n sortable: sortable,\n // index 列\n index: this.index\n };\n\n const basicProps = ['columnKey', 'label', 'className', 'labelClassName', 'type', 'renderHeader', 'formatter', 'fixed', 'resizable'];\n const sortProps = ['sortMethod', 'sortBy', 'sortOrders'];\n const selectProps = ['selectable', 'reserveSelection'];\n const filterProps = ['filterMethod', 'filters', 'filterMultiple', 'filterOpened', 'filteredValue', 'filterPlacement'];\n\n let column = this.getPropsData(basicProps, sortProps, selectProps, filterProps);\n column = mergeOptions(defaults, column);\n\n // 注意 compose 中函数执行的顺序是从右到左\n const chains = compose(this.setColumnRenders, this.setColumnWidth, this.setColumnForcedProps);\n column = chains(column);\n\n this.columnConfig = column;\n\n // 注册 watcher\n this.registerNormalWatchers();\n this.registerComplexWatchers();\n },\n\n mounted() {\n const owner = this.owner;\n const parent = this.columnOrTableParent;\n const children = this.isSubColumn ? parent.$el.children : parent.$refs.hiddenColumns.children;\n const columnIndex = this.getColumnElIndex(children, this.$el);\n\n owner.store.commit('insertColumn', this.columnConfig, columnIndex, this.isSubColumn ? parent.columnConfig : null);\n },\n\n destroyed() {\n if (!this.$parent) return;\n const parent = this.$parent;\n this.owner.store.commit('removeColumn', this.columnConfig, this.isSubColumn ? parent.columnConfig : null);\n },\n\n render(h) {\n // slots 也要渲染,需要计算合并表头\n return h('div', this.$slots.default);\n }\n};\n","import ElTableColumn from '../table/src/table-column';\n\n/* istanbul ignore next */\nElTableColumn.install = function(Vue) {\n Vue.component(ElTableColumn.name, ElTableColumn);\n};\n\nexport default ElTableColumn;\n","import 'element/css/table-column.scss'\n\nimport TableColumn from 'element-ui/packages/table-column'\n\nexport default TableColumn\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!./ProfileLinks.vue?vue&type=style&index=0&id=8723bffe&prod&lang=scss&scoped=true&\"","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n","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","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!./DashboardTitle.vue?vue&type=style&index=0&id=4b73f0b4&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!./ProfileRouterLink.vue?vue&type=style&index=0&id=ab2d3d7c&prod&lang=scss&scoped=true&\"","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","/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule UserAgent_DEPRECATED\n */\n\n/**\n * Provides entirely client-side User Agent and OS detection. You should prefer\n * the non-deprecated UserAgent module when possible, which exposes our\n * authoritative server-side PHP-based detection to the client.\n *\n * Usage is straightforward:\n *\n * if (UserAgent_DEPRECATED.ie()) {\n * // IE\n * }\n *\n * You can also do version checks:\n *\n * if (UserAgent_DEPRECATED.ie() >= 7) {\n * // IE7 or better\n * }\n *\n * The browser functions will return NaN if the browser does not match, so\n * you can also do version compares the other way:\n *\n * if (UserAgent_DEPRECATED.ie() < 7) {\n * // IE6 or worse\n * }\n *\n * Note that the version is a float and may include a minor version number,\n * so you should always use range operators to perform comparisons, not\n * strict equality.\n *\n * **Note:** You should **strongly** prefer capability detection to browser\n * version detection where it's reasonable:\n *\n * http://www.quirksmode.org/js/support.html\n *\n * Further, we have a large number of mature wrapper functions and classes\n * which abstract away many browser irregularities. Check the documentation,\n * grep for things, or ask on javascript@lists.facebook.com before writing yet\n * another copy of \"event || window.event\".\n *\n */\n\nvar _populated = false;\n\n// Browsers\nvar _ie, _firefox, _opera, _webkit, _chrome;\n\n// Actual IE browser for compatibility mode\nvar _ie_real_version;\n\n// Platforms\nvar _osx, _windows, _linux, _android;\n\n// Architectures\nvar _win64;\n\n// Devices\nvar _iphone, _ipad, _native;\n\nvar _mobile;\n\nfunction _populate() {\n if (_populated) {\n return;\n }\n\n _populated = true;\n\n // To work around buggy JS libraries that can't handle multi-digit\n // version numbers, Opera 10's user agent string claims it's Opera\n // 9, then later includes a Version/X.Y field:\n //\n // Opera/9.80 (foo) Presto/2.2.15 Version/10.10\n var uas = navigator.userAgent;\n var agent = /(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(uas);\n var os = /(Mac OS X)|(Windows)|(Linux)/.exec(uas);\n\n _iphone = /\\b(iPhone|iP[ao]d)/.exec(uas);\n _ipad = /\\b(iP[ao]d)/.exec(uas);\n _android = /Android/i.exec(uas);\n _native = /FBAN\\/\\w+;/i.exec(uas);\n _mobile = /Mobile/i.exec(uas);\n\n // Note that the IE team blog would have you believe you should be checking\n // for 'Win64; x64'. But MSDN then reveals that you can actually be coming\n // from either x64 or ia64; so ultimately, you should just check for Win64\n // as in indicator of whether you're in 64-bit IE. 32-bit IE on 64-bit\n // Windows will send 'WOW64' instead.\n _win64 = !!(/Win64/.exec(uas));\n\n if (agent) {\n _ie = agent[1] ? parseFloat(agent[1]) : (\n agent[5] ? parseFloat(agent[5]) : NaN);\n // IE compatibility mode\n if (_ie && document && document.documentMode) {\n _ie = document.documentMode;\n }\n // grab the \"true\" ie version from the trident token if available\n var trident = /(?:Trident\\/(\\d+.\\d+))/.exec(uas);\n _ie_real_version = trident ? parseFloat(trident[1]) + 4 : _ie;\n\n _firefox = agent[2] ? parseFloat(agent[2]) : NaN;\n _opera = agent[3] ? parseFloat(agent[3]) : NaN;\n _webkit = agent[4] ? parseFloat(agent[4]) : NaN;\n if (_webkit) {\n // We do not add the regexp to the above test, because it will always\n // match 'safari' only since 'AppleWebKit' appears before 'Chrome' in\n // the userAgent string.\n agent = /(?:Chrome\\/(\\d+\\.\\d+))/.exec(uas);\n _chrome = agent && agent[1] ? parseFloat(agent[1]) : NaN;\n } else {\n _chrome = NaN;\n }\n } else {\n _ie = _firefox = _opera = _chrome = _webkit = NaN;\n }\n\n if (os) {\n if (os[1]) {\n // Detect OS X version. If no version number matches, set _osx to true.\n // Version examples: 10, 10_6_1, 10.7\n // Parses version number as a float, taking only first two sets of\n // digits. If only one set of digits is found, returns just the major\n // version number.\n var ver = /(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(uas);\n\n _osx = ver ? parseFloat(ver[1].replace('_', '.')) : true;\n } else {\n _osx = false;\n }\n _windows = !!os[2];\n _linux = !!os[3];\n } else {\n _osx = _windows = _linux = false;\n }\n}\n\nvar UserAgent_DEPRECATED = {\n\n /**\n * Check if the UA is Internet Explorer.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n ie: function() {\n return _populate() || _ie;\n },\n\n /**\n * Check if we're in Internet Explorer compatibility mode.\n *\n * @return bool true if in compatibility mode, false if\n * not compatibility mode or not ie\n */\n ieCompatibilityMode: function() {\n return _populate() || (_ie_real_version > _ie);\n },\n\n\n /**\n * Whether the browser is 64-bit IE. Really, this is kind of weak sauce; we\n * only need this because Skype can't handle 64-bit IE yet. We need to remove\n * this when we don't need it -- tracked by #601957.\n */\n ie64: function() {\n return UserAgent_DEPRECATED.ie() && _win64;\n },\n\n /**\n * Check if the UA is Firefox.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n firefox: function() {\n return _populate() || _firefox;\n },\n\n\n /**\n * Check if the UA is Opera.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n opera: function() {\n return _populate() || _opera;\n },\n\n\n /**\n * Check if the UA is WebKit.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n webkit: function() {\n return _populate() || _webkit;\n },\n\n /**\n * For Push\n * WILL BE REMOVED VERY SOON. Use UserAgent_DEPRECATED.webkit\n */\n safari: function() {\n return UserAgent_DEPRECATED.webkit();\n },\n\n /**\n * Check if the UA is a Chrome browser.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n chrome : function() {\n return _populate() || _chrome;\n },\n\n\n /**\n * Check if the user is running Windows.\n *\n * @return bool `true' if the user's OS is Windows.\n */\n windows: function() {\n return _populate() || _windows;\n },\n\n\n /**\n * Check if the user is running Mac OS X.\n *\n * @return float|bool Returns a float if a version number is detected,\n * otherwise true/false.\n */\n osx: function() {\n return _populate() || _osx;\n },\n\n /**\n * Check if the user is running Linux.\n *\n * @return bool `true' if the user's OS is some flavor of Linux.\n */\n linux: function() {\n return _populate() || _linux;\n },\n\n /**\n * Check if the user is running on an iPhone or iPod platform.\n *\n * @return bool `true' if the user is running some flavor of the\n * iPhone OS.\n */\n iphone: function() {\n return _populate() || _iphone;\n },\n\n mobile: function() {\n return _populate() || (_iphone || _ipad || _android || _mobile);\n },\n\n nativeApp: function() {\n // webviews inside of the native apps\n return _populate() || _native;\n },\n\n android: function() {\n return _populate() || _android;\n },\n\n ipad: function() {\n return _populate() || _ipad;\n }\n};\n\nmodule.exports = UserAgent_DEPRECATED;\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&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('label',{staticClass:\"el-checkbox\",class:[\n _vm.border && _vm.checkboxSize ? 'el-checkbox--' + _vm.checkboxSize : '',\n { 'is-disabled': _vm.isDisabled },\n { 'is-bordered': _vm.border },\n { 'is-checked': _vm.isChecked }\n ],attrs:{\"id\":_vm.id}},[_c('span',{staticClass:\"el-checkbox__input\",class:{\n 'is-disabled': _vm.isDisabled,\n 'is-checked': _vm.isChecked,\n 'is-indeterminate': _vm.indeterminate,\n 'is-focus': _vm.focus\n },attrs:{\"tabindex\":_vm.indeterminate ? 0 : false,\"role\":_vm.indeterminate ? 'checkbox' : false,\"aria-checked\":_vm.indeterminate ? 'mixed' : false}},[_c('span',{staticClass:\"el-checkbox__inner\"}),(_vm.trueLabel || _vm.falseLabel)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model),expression:\"model\"}],staticClass:\"el-checkbox__original\",attrs:{\"type\":\"checkbox\",\"aria-hidden\":_vm.indeterminate ? 'true' : 'false',\"name\":_vm.name,\"disabled\":_vm.isDisabled,\"true-value\":_vm.trueLabel,\"false-value\":_vm.falseLabel},domProps:{\"checked\":Array.isArray(_vm.model)?_vm._i(_vm.model,null)>-1:_vm._q(_vm.model,_vm.trueLabel)},on:{\"change\":[function($event){var $$a=_vm.model,$$el=$event.target,$$c=$$el.checked?(_vm.trueLabel):(_vm.falseLabel);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.model=$$a.concat([$$v]))}else{$$i>-1&&(_vm.model=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.model=$$c}},_vm.handleChange],\"focus\":function($event){_vm.focus = true},\"blur\":function($event){_vm.focus = false}}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model),expression:\"model\"}],staticClass:\"el-checkbox__original\",attrs:{\"type\":\"checkbox\",\"aria-hidden\":_vm.indeterminate ? 'true' : 'false',\"disabled\":_vm.isDisabled,\"name\":_vm.name},domProps:{\"value\":_vm.label,\"checked\":Array.isArray(_vm.model)?_vm._i(_vm.model,_vm.label)>-1:(_vm.model)},on:{\"change\":[function($event){var $$a=_vm.model,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=_vm.label,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.model=$$a.concat([$$v]))}else{$$i>-1&&(_vm.model=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.model=$$c}},_vm.handleChange],\"focus\":function($event){_vm.focus = true},\"blur\":function($event){_vm.focus = false}}})]),(_vm.$slots.default || _vm.label)?_c('span',{staticClass:\"el-checkbox__label\"},[_vm._t(\"default\"),(!_vm.$slots.default)?[_vm._v(_vm._s(_vm.label))]:_vm._e()],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!./checkbox.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!./checkbox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./checkbox.vue?vue&type=template&id=2f16cb9e&\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js&\"\nexport * from \"./checkbox.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 ElCheckbox from './src/checkbox';\n\n/* istanbul ignore next */\nElCheckbox.install = function(Vue) {\n Vue.component(ElCheckbox.name, ElCheckbox);\n};\n\nexport default ElCheckbox;\n","module.exports = \"data:image/png;base64,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\"","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\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!./CampaignPerformance.vue?vue&type=style&index=0&id=e6d4e0ea&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!./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&\"","module.exports = require('./src/normalizeWheel.js');\n","import { getValueByPath } from 'element-ui/src/utils/util';\n\nexport const getCell = function(event) {\n let cell = event.target;\n\n while (cell && cell.tagName.toUpperCase() !== 'HTML') {\n if (cell.tagName.toUpperCase() === 'TD') {\n return cell;\n }\n cell = cell.parentNode;\n }\n\n return null;\n};\n\nconst isObject = function(obj) {\n return obj !== null && typeof obj === 'object';\n};\n\nexport const orderBy = function(array, sortKey, reverse, sortMethod, sortBy) {\n if (!sortKey && !sortMethod && (!sortBy || Array.isArray(sortBy) && !sortBy.length)) {\n return array;\n }\n if (typeof reverse === 'string') {\n reverse = reverse === 'descending' ? -1 : 1;\n } else {\n reverse = (reverse && reverse < 0) ? -1 : 1;\n }\n const getKey = sortMethod ? null : function(value, index) {\n if (sortBy) {\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map(function(by) {\n if (typeof by === 'string') {\n return getValueByPath(value, by);\n } else {\n return by(value, index, array);\n }\n });\n }\n if (sortKey !== '$key') {\n if (isObject(value) && '$value' in value) value = value.$value;\n }\n return [isObject(value) ? getValueByPath(value, sortKey) : value];\n };\n const compare = function(a, b) {\n if (sortMethod) {\n return sortMethod(a.value, b.value);\n }\n for (let i = 0, len = a.key.length; i < len; i++) {\n if (a.key[i] < b.key[i]) {\n return -1;\n }\n if (a.key[i] > b.key[i]) {\n return 1;\n }\n }\n return 0;\n };\n return array.map(function(value, index) {\n return {\n value: value,\n index: index,\n key: getKey ? getKey(value, index) : null\n };\n }).sort(function(a, b) {\n let order = compare(a, b);\n if (!order) {\n // make stable https://en.wikipedia.org/wiki/Sorting_algorithm#Stability\n order = a.index - b.index;\n }\n return order * reverse;\n }).map(item => item.value);\n};\n\nexport const getColumnById = function(table, columnId) {\n let column = null;\n table.columns.forEach(function(item) {\n if (item.id === columnId) {\n column = item;\n }\n });\n return column;\n};\n\nexport const getColumnByKey = function(table, columnKey) {\n let column = null;\n for (let i = 0; i < table.columns.length; i++) {\n const item = table.columns[i];\n if (item.columnKey === columnKey) {\n column = item;\n break;\n }\n }\n return column;\n};\n\nexport const getColumnByCell = function(table, cell) {\n const matches = (cell.className || '').match(/el-table_[^\\s]+/gm);\n if (matches) {\n return getColumnById(table, matches[0]);\n }\n return null;\n};\n\nexport const getRowIdentity = (row, rowKey) => {\n if (!row) throw new Error('row is required when get row identity');\n if (typeof rowKey === 'string') {\n if (rowKey.indexOf('.') < 0) {\n return row[rowKey];\n }\n let key = rowKey.split('.');\n let current = row;\n for (let i = 0; i < key.length; i++) {\n current = current[key[i]];\n }\n return current;\n } else if (typeof rowKey === 'function') {\n return rowKey.call(null, row);\n }\n};\n\nexport const getKeysMap = function(array, rowKey) {\n const arrayMap = {};\n (array || []).forEach((row, index) => {\n arrayMap[getRowIdentity(row, rowKey)] = { row, index };\n });\n return arrayMap;\n};\n\nfunction hasOwn(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport function mergeOptions(defaults, config) {\n const options = {};\n let key;\n for (key in defaults) {\n options[key] = defaults[key];\n }\n for (key in config) {\n if (hasOwn(config, key)) {\n const value = config[key];\n if (typeof value !== 'undefined') {\n options[key] = value;\n }\n }\n }\n return options;\n}\n\nexport function parseWidth(width) {\n if (width !== undefined) {\n width = parseInt(width, 10);\n if (isNaN(width)) {\n width = null;\n }\n }\n return width;\n}\n\nexport function parseMinWidth(minWidth) {\n if (typeof minWidth !== 'undefined') {\n minWidth = parseWidth(minWidth);\n if (isNaN(minWidth)) {\n minWidth = 80;\n }\n }\n return minWidth;\n};\n\nexport function parseHeight(height) {\n if (typeof height === 'number') {\n return height;\n }\n if (typeof height === 'string') {\n if (/^\\d+(?:px)?$/.test(height)) {\n return parseInt(height, 10);\n } else {\n return height;\n }\n }\n return null;\n}\n\n// https://github.com/reduxjs/redux/blob/master/src/compose.js\nexport function compose(...funcs) {\n if (funcs.length === 0) {\n return arg => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\nexport function toggleRowStatus(statusArr, row, newVal) {\n let changed = false;\n const index = statusArr.indexOf(row);\n const included = index !== -1;\n\n const addRow = () => {\n statusArr.push(row);\n changed = true;\n };\n const removeRow = () => {\n statusArr.splice(index, 1);\n changed = true;\n };\n\n if (typeof newVal === 'boolean') {\n if (newVal && !included) {\n addRow();\n } else if (!newVal && included) {\n removeRow();\n }\n } else {\n if (included) {\n removeRow();\n } else {\n addRow();\n }\n }\n return changed;\n}\n\nexport function walkTreeNode(root, cb, childrenKey = 'children', lazyKey = 'hasChildren') {\n const isNil = (array) => !(Array.isArray(array) && array.length);\n\n function _walker(parent, children, level) {\n cb(parent, children, level);\n children.forEach(item => {\n if (item[lazyKey]) {\n cb(item, null, level + 1);\n return;\n }\n const children = item[childrenKey];\n if (!isNil(children)) {\n _walker(item, children, level + 1);\n }\n });\n }\n\n root.forEach(item => {\n if (item[lazyKey]) {\n cb(item, null, 0);\n return;\n }\n const children = item[childrenKey];\n if (!isNil(children)) {\n _walker(item, children, 0);\n }\n });\n}\n","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","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!./Link.vue?vue&type=style&index=0&id=4921a787&prod&lang=scss&scoped=true&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.DashboardLayout,{attrs:{\"full-width\":true}},[(_setup.campaignSlug)?_c('div',[_c(_setup.Header,{attrs:{\"title\":_setup.campaignInfo.title,\"show-copy-link\":true}}),_c(_setup.Tabs,{attrs:{\"status\":_setup.campaignInfo.status,\"updated-at\":_setup.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):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport DashboardLayout from 'components/layouts/DashboardLayout/index.vue'\nimport { useRoute } from 'lib/helpers/useRoute'\nimport moment from 'moment'\nimport store from 'Partner/pages/PartnerAnalytics/store'\nimport { computed, onBeforeUnmount } from 'vue'\n\nimport { vm } from '@/main'\n\nimport CampaignPerformance from './components/sections/CampaignPerformance.vue'\nimport CategoriesPerformance from './components/sections/CategoriesPerformance.vue'\nimport CreatorsPerformance from './components/sections/CreatorsPerformance.vue'\nimport Header from './components/sections/Header.vue'\nimport Tabs from './components/sections/Tabs.vue'\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n setup(__props) {\n\nconst route = useRoute()\nconst urlSlug = computed(() => route.params.campaignSlug)\n\nconst campaignInfo = computed(() => vm.$store.getters['adAnalytics/campaignInfo'])\nconst campaignSlug = computed(() => vm.$store.getters['adAnalytics/campaignSlug'])\nconst tab = computed(() => vm.$store.getters['adAnalytics/activeTab'])\nconst updatedAt = computed(() => {\n const serverDate = campaignInfo.value.updatedAt\n if (!serverDate) return '-'\n const date = serverDate.split(' ')[0]\n const time = serverDate.split(' ')[1]\n return `${moment(date).format('DD-MM-YYYY')} ${time}`\n})\n\nif (!vm.$store.hasModule('adAnalytics')) {\n vm.$store.registerModule('adAnalytics', store)\n}\n\nif (urlSlug.value) {\n vm.$store.dispatch('adAnalytics/setCampaignType', urlSlug.value)\n vm.$store.dispatch('adAnalytics/setCampaignSlug', urlSlug.value)\n}\n\nonBeforeUnmount(() => {\n vm.$store.dispatch('adAnalytics/resetState')\n})\n\nreturn { __sfc: true,route, urlSlug, campaignInfo, campaignSlug, tab, updatedAt, DashboardLayout, CampaignPerformance, CategoriesPerformance, CreatorsPerformance, Header, Tabs }\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=46b2f182&\"\nimport script from \"./index.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./index.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","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\"","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!./DashboardLogoutButton.vue?vue&type=style&index=0&id=a028595e&prod&lang=scss&scoped=true&\"","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 * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule normalizeWheel\n * @typechecks\n */\n\n'use strict';\n\nvar UserAgent_DEPRECATED = require('./UserAgent_DEPRECATED');\n\nvar isEventSupported = require('./isEventSupported');\n\n\n// Reasonable defaults\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return { spinX : sX,\n spinY : sY,\n pixelX : pX,\n pixelY : pY };\n}\n\n\n/**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\nnormalizeWheel.getEventType = function() /*string*/ {\n return (UserAgent_DEPRECATED.firefox())\n ? 'DOMMouseScroll'\n : (isEventSupported('wheel'))\n ? 'wheel'\n : 'mousewheel';\n};\n\nmodule.exports = normalizeWheel;\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","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=94cc7f08&prod&lang=scss&scoped=true&\"","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","/* 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","\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=8d555766&prod&lang=scss&scoped=true&\"","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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"el-table\",class:[{\n 'el-table--fit': _vm.fit,\n 'el-table--striped': _vm.stripe,\n 'el-table--border': _vm.border || _vm.isGroup,\n 'el-table--hidden': _vm.isHidden,\n 'el-table--group': _vm.isGroup,\n 'el-table--fluid-height': _vm.maxHeight,\n 'el-table--scrollable-x': _vm.layout.scrollX,\n 'el-table--scrollable-y': _vm.layout.scrollY,\n 'el-table--enable-row-hover': !_vm.store.states.isComplex,\n 'el-table--enable-row-transition': (_vm.store.states.data || []).length !== 0 && (_vm.store.states.data || []).length < 100\n }, _vm.tableSize ? `el-table--${ _vm.tableSize }` : ''],on:{\"mouseleave\":function($event){return _vm.handleMouseLeave($event)}}},[_c('div',{ref:\"hiddenColumns\",staticClass:\"hidden-columns\"},[_vm._t(\"default\")],2),(_vm.showHeader)?_c('div',{directives:[{name:\"mousewheel\",rawName:\"v-mousewheel\",value:(_vm.handleHeaderFooterMousewheel),expression:\"handleHeaderFooterMousewheel\"}],ref:\"headerWrapper\",staticClass:\"el-table__header-wrapper\"},[_c('table-header',{ref:\"tableHeader\",style:({\n width: _vm.layout.bodyWidth ? _vm.layout.bodyWidth + 'px' : ''\n }),attrs:{\"store\":_vm.store,\"border\":_vm.border,\"default-sort\":_vm.defaultSort}})],1):_vm._e(),_c('div',{ref:\"bodyWrapper\",staticClass:\"el-table__body-wrapper\",class:[_vm.layout.scrollX ? `is-scrolling-${_vm.scrollPosition}` : 'is-scrolling-none'],style:([_vm.bodyHeight])},[_c('table-body',{style:({\n width: _vm.bodyWidth\n }),attrs:{\"context\":_vm.context,\"store\":_vm.store,\"stripe\":_vm.stripe,\"row-class-name\":_vm.rowClassName,\"row-style\":_vm.rowStyle,\"highlight\":_vm.highlightCurrentRow}}),(!_vm.data || _vm.data.length === 0)?_c('div',{ref:\"emptyBlock\",staticClass:\"el-table__empty-block\",style:(_vm.emptyBlockStyle)},[_c('span',{staticClass:\"el-table__empty-text\"},[_vm._t(\"empty\",function(){return [_vm._v(_vm._s(_vm.emptyText || _vm.t('el.table.emptyText')))]})],2)]):_vm._e(),(_vm.$slots.append)?_c('div',{ref:\"appendWrapper\",staticClass:\"el-table__append-wrapper\"},[_vm._t(\"append\")],2):_vm._e()],1),(_vm.showSummary)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.data && _vm.data.length > 0),expression:\"data && data.length > 0\"},{name:\"mousewheel\",rawName:\"v-mousewheel\",value:(_vm.handleHeaderFooterMousewheel),expression:\"handleHeaderFooterMousewheel\"}],ref:\"footerWrapper\",staticClass:\"el-table__footer-wrapper\"},[_c('table-footer',{style:({\n width: _vm.layout.bodyWidth ? _vm.layout.bodyWidth + 'px' : ''\n }),attrs:{\"store\":_vm.store,\"border\":_vm.border,\"sum-text\":_vm.sumText || _vm.t('el.table.sumText'),\"summary-method\":_vm.summaryMethod,\"default-sort\":_vm.defaultSort}})],1):_vm._e(),(_vm.fixedColumns.length > 0)?_c('div',{directives:[{name:\"mousewheel\",rawName:\"v-mousewheel\",value:(_vm.handleFixedMousewheel),expression:\"handleFixedMousewheel\"}],ref:\"fixedWrapper\",staticClass:\"el-table__fixed\",style:([{\n width: _vm.layout.fixedWidth ? _vm.layout.fixedWidth + 'px' : ''\n },\n _vm.fixedHeight])},[(_vm.showHeader)?_c('div',{ref:\"fixedHeaderWrapper\",staticClass:\"el-table__fixed-header-wrapper\"},[_c('table-header',{ref:\"fixedTableHeader\",style:({\n width: _vm.bodyWidth\n }),attrs:{\"fixed\":\"left\",\"border\":_vm.border,\"store\":_vm.store}})],1):_vm._e(),_c('div',{ref:\"fixedBodyWrapper\",staticClass:\"el-table__fixed-body-wrapper\",style:([{\n top: _vm.layout.headerHeight + 'px'\n },\n _vm.fixedBodyHeight])},[_c('table-body',{style:({\n width: _vm.bodyWidth\n }),attrs:{\"fixed\":\"left\",\"store\":_vm.store,\"stripe\":_vm.stripe,\"highlight\":_vm.highlightCurrentRow,\"row-class-name\":_vm.rowClassName,\"row-style\":_vm.rowStyle}}),(_vm.$slots.append)?_c('div',{staticClass:\"el-table__append-gutter\",style:({ height: _vm.layout.appendHeight + 'px'})}):_vm._e()],1),(_vm.showSummary)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.data && _vm.data.length > 0),expression:\"data && data.length > 0\"}],ref:\"fixedFooterWrapper\",staticClass:\"el-table__fixed-footer-wrapper\"},[_c('table-footer',{style:({\n width: _vm.bodyWidth\n }),attrs:{\"fixed\":\"left\",\"border\":_vm.border,\"sum-text\":_vm.sumText || _vm.t('el.table.sumText'),\"summary-method\":_vm.summaryMethod,\"store\":_vm.store}})],1):_vm._e()]):_vm._e(),(_vm.rightFixedColumns.length > 0)?_c('div',{directives:[{name:\"mousewheel\",rawName:\"v-mousewheel\",value:(_vm.handleFixedMousewheel),expression:\"handleFixedMousewheel\"}],ref:\"rightFixedWrapper\",staticClass:\"el-table__fixed-right\",style:([{\n width: _vm.layout.rightFixedWidth ? _vm.layout.rightFixedWidth + 'px' : '',\n right: _vm.layout.scrollY ? (_vm.border ? _vm.layout.gutterWidth : (_vm.layout.gutterWidth || 0)) + 'px' : ''\n },\n _vm.fixedHeight])},[(_vm.showHeader)?_c('div',{ref:\"rightFixedHeaderWrapper\",staticClass:\"el-table__fixed-header-wrapper\"},[_c('table-header',{ref:\"rightFixedTableHeader\",style:({\n width: _vm.bodyWidth\n }),attrs:{\"fixed\":\"right\",\"border\":_vm.border,\"store\":_vm.store}})],1):_vm._e(),_c('div',{ref:\"rightFixedBodyWrapper\",staticClass:\"el-table__fixed-body-wrapper\",style:([{\n top: _vm.layout.headerHeight + 'px'\n },\n _vm.fixedBodyHeight])},[_c('table-body',{style:({\n width: _vm.bodyWidth\n }),attrs:{\"fixed\":\"right\",\"store\":_vm.store,\"stripe\":_vm.stripe,\"row-class-name\":_vm.rowClassName,\"row-style\":_vm.rowStyle,\"highlight\":_vm.highlightCurrentRow}}),(_vm.$slots.append)?_c('div',{staticClass:\"el-table__append-gutter\",style:({ height: _vm.layout.appendHeight + 'px' })}):_vm._e()],1),(_vm.showSummary)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.data && _vm.data.length > 0),expression:\"data && data.length > 0\"}],ref:\"rightFixedFooterWrapper\",staticClass:\"el-table__fixed-footer-wrapper\"},[_c('table-footer',{style:({\n width: _vm.bodyWidth\n }),attrs:{\"fixed\":\"right\",\"border\":_vm.border,\"sum-text\":_vm.sumText || _vm.t('el.table.sumText'),\"summary-method\":_vm.summaryMethod,\"store\":_vm.store}})],1):_vm._e()]):_vm._e(),(_vm.rightFixedColumns.length > 0)?_c('div',{ref:\"rightFixedPatch\",staticClass:\"el-table__fixed-right-patch\",style:({\n width: _vm.layout.scrollY ? _vm.layout.gutterWidth + 'px' : '0',\n height: _vm.layout.headerHeight + 'px'\n })}):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.resizeProxyVisible),expression:\"resizeProxyVisible\"}],ref:\"resizeProxy\",staticClass:\"el-table__column-resize-proxy\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import normalizeWheel from 'normalize-wheel';\n\nconst isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\nconst mousewheel = function(element, callback) {\n if (element && element.addEventListener) {\n element.addEventListener(isFirefox ? 'DOMMouseScroll' : 'mousewheel', function(event) {\n const normalized = normalizeWheel(event);\n callback && callback.apply(this, [event, normalized]);\n });\n }\n};\n\nexport default {\n bind(el, binding) {\n mousewheel(el, binding.value);\n }\n};\n","import { toggleRowStatus, getKeysMap, getRowIdentity } from '../util';\n\nexport default {\n data() {\n return {\n states: {\n defaultExpandAll: false,\n expandRows: []\n }\n };\n },\n\n methods: {\n updateExpandRows() {\n const { data = [], rowKey, defaultExpandAll, expandRows } = this.states;\n if (defaultExpandAll) {\n this.states.expandRows = data.slice();\n } else if (rowKey) {\n // TODO:这里的代码可以优化\n const expandRowsMap = getKeysMap(expandRows, rowKey);\n this.states.expandRows = data.reduce((prev, row) => {\n const rowId = getRowIdentity(row, rowKey);\n const rowInfo = expandRowsMap[rowId];\n if (rowInfo) {\n prev.push(row);\n }\n return prev;\n }, []);\n } else {\n this.states.expandRows = [];\n }\n },\n\n toggleRowExpansion(row, expanded) {\n const changed = toggleRowStatus(this.states.expandRows, row, expanded);\n if (changed) {\n this.table.$emit('expand-change', row, this.states.expandRows.slice());\n this.scheduleLayout();\n }\n },\n\n setExpandRowKeys(rowKeys) {\n this.assertRowKey();\n // TODO:这里的代码可以优化\n const { data, rowKey } = this.states;\n const keysMap = getKeysMap(data, rowKey);\n this.states.expandRows = rowKeys.reduce((prev, cur) => {\n const info = keysMap[cur];\n if (info) {\n prev.push(info.row);\n }\n return prev;\n }, []);\n },\n\n isRowExpanded(row) {\n const { expandRows = [], rowKey } = this.states;\n if (rowKey) {\n const expandMap = getKeysMap(expandRows, rowKey);\n return !!expandMap[getRowIdentity(row, rowKey)];\n }\n return expandRows.indexOf(row) !== -1;\n }\n }\n};\n","import { arrayFind } from 'element-ui/src/utils/util';\nimport { getRowIdentity } from '../util';\n\nexport default {\n data() {\n return {\n states: {\n // 不可响应的,设置 currentRowKey 时,data 不一定存在,也许无法算出正确的 currentRow\n // 把该值缓存一下,当用户点击修改 currentRow 时,把该值重置为 null\n _currentRowKey: null,\n currentRow: null\n }\n };\n },\n\n methods: {\n setCurrentRowKey(key) {\n this.assertRowKey();\n this.states._currentRowKey = key;\n this.setCurrentRowByKey(key);\n },\n\n restoreCurrentRowKey() {\n this.states._currentRowKey = null;\n },\n\n setCurrentRowByKey(key) {\n const { states } = this;\n const { data = [], rowKey } = states;\n let currentRow = null;\n if (rowKey) {\n currentRow = arrayFind(data, item => getRowIdentity(item, rowKey) === key);\n }\n states.currentRow = currentRow;\n },\n\n updateCurrentRow(currentRow) {\n const { states, table } = this;\n const oldCurrentRow = states.currentRow;\n if (currentRow && currentRow !== oldCurrentRow) {\n states.currentRow = currentRow;\n table.$emit('current-change', currentRow, oldCurrentRow);\n return;\n }\n if (!currentRow && oldCurrentRow) {\n states.currentRow = null;\n table.$emit('current-change', null, oldCurrentRow);\n }\n },\n\n updateCurrentRowData() {\n const { states, table } = this;\n const { rowKey, _currentRowKey } = states;\n // data 为 null 时,解构时的默认值会被忽略\n const data = states.data || [];\n const oldCurrentRow = states.currentRow;\n\n // 当 currentRow 不在 data 中时尝试更新数据\n if (data.indexOf(oldCurrentRow) === -1 && oldCurrentRow) {\n if (rowKey) {\n const currentRowKey = getRowIdentity(oldCurrentRow, rowKey);\n this.setCurrentRowByKey(currentRowKey);\n } else {\n states.currentRow = null;\n }\n if (states.currentRow === null) {\n table.$emit('current-change', null, oldCurrentRow);\n }\n } else if (_currentRowKey) {\n // 把初始时下设置的 rowKey 转化成 rowData\n this.setCurrentRowByKey(_currentRowKey);\n this.restoreCurrentRowKey();\n }\n }\n }\n};\n","import { walkTreeNode, getRowIdentity } from '../util';\n\nexport default {\n data() {\n return {\n states: {\n // defaultExpandAll 存在于 expand.js 中,这里不重复添加\n // 在展开行中,expandRowKeys 会被转化成 expandRows,expandRowKeys 这个属性只是记录了 TreeTable 行的展开\n // TODO: 拆分为独立的 TreeTable,统一用法\n expandRowKeys: [],\n treeData: {},\n indent: 16,\n lazy: false,\n lazyTreeNodeMap: {},\n lazyColumnIdentifier: 'hasChildren',\n childrenColumnName: 'children'\n }\n };\n },\n\n computed: {\n // 嵌入型的数据,watch 无法是检测到变化 https://github.com/ElemeFE/element/issues/14998\n // TODO: 使用 computed 解决该问题,是否会造成性能问题?\n // @return { id: { level, children } }\n normalizedData() {\n if (!this.states.rowKey) return {};\n const data = this.states.data || [];\n return this.normalize(data);\n },\n // @return { id: { children } }\n // 针对懒加载的情形,不处理嵌套数据\n normalizedLazyNode() {\n const { rowKey, lazyTreeNodeMap, lazyColumnIdentifier } = this.states;\n const keys = Object.keys(lazyTreeNodeMap);\n const res = {};\n if (!keys.length) return res;\n keys.forEach(key => {\n if (lazyTreeNodeMap[key].length) {\n const item = { children: [] };\n lazyTreeNodeMap[key].forEach(row => {\n const currentRowKey = getRowIdentity(row, rowKey);\n item.children.push(currentRowKey);\n if (row[lazyColumnIdentifier] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] };\n }\n });\n res[key] = item;\n }\n });\n return res;\n }\n },\n\n watch: {\n normalizedData: 'updateTreeData',\n normalizedLazyNode: 'updateTreeData'\n },\n\n methods: {\n normalize(data) {\n const {\n childrenColumnName,\n lazyColumnIdentifier,\n rowKey,\n lazy\n } = this.states;\n const res = {};\n walkTreeNode(\n data,\n (parent, children, level) => {\n const parentId = getRowIdentity(parent, rowKey);\n if (Array.isArray(children)) {\n res[parentId] = {\n children: children.map(row => getRowIdentity(row, rowKey)),\n level\n };\n } else if (lazy) {\n // 当 children 不存在且 lazy 为 true,该节点即为懒加载的节点\n res[parentId] = {\n children: [],\n lazy: true,\n level\n };\n }\n },\n childrenColumnName,\n lazyColumnIdentifier\n );\n return res;\n },\n\n updateTreeData() {\n const nested = this.normalizedData;\n const normalizedLazyNode = this.normalizedLazyNode;\n const keys = Object.keys(nested);\n const newTreeData = {};\n if (keys.length) {\n const {\n treeData: oldTreeData,\n defaultExpandAll,\n expandRowKeys,\n lazy\n } = this.states;\n const rootLazyRowKeys = [];\n const getExpanded = (oldValue, key) => {\n const included =\n defaultExpandAll ||\n (expandRowKeys && expandRowKeys.indexOf(key) !== -1);\n return !!((oldValue && oldValue.expanded) || included);\n };\n // 合并 expanded 与 display,确保数据刷新后,状态不变\n keys.forEach(key => {\n const oldValue = oldTreeData[key];\n const newValue = { ...nested[key] };\n newValue.expanded = getExpanded(oldValue, key);\n if (newValue.lazy) {\n const { loaded = false, loading = false } = oldValue || {};\n newValue.loaded = !!loaded;\n newValue.loading = !!loading;\n rootLazyRowKeys.push(key);\n }\n newTreeData[key] = newValue;\n });\n // 根据懒加载数据更新 treeData\n const lazyKeys = Object.keys(normalizedLazyNode);\n if (lazy && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach(key => {\n const oldValue = oldTreeData[key];\n const lazyNodeChildren = normalizedLazyNode[key].children;\n if (rootLazyRowKeys.indexOf(key) !== -1) {\n // 懒加载的 root 节点,更新一下原有的数据,原来的 children 一定是空数组\n if (newTreeData[key].children.length !== 0) {\n throw new Error('[ElTable]children must be an empty array.');\n }\n newTreeData[key].children = lazyNodeChildren;\n } else {\n const { loaded = false, loading = false } = oldValue || {};\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: ''\n };\n }\n });\n }\n }\n this.states.treeData = newTreeData;\n this.updateTableScrollY();\n },\n\n updateTreeExpandKeys(value) {\n this.states.expandRowKeys = value;\n this.updateTreeData();\n },\n\n toggleTreeExpansion(row, expanded) {\n this.assertRowKey();\n\n const { rowKey, treeData } = this.states;\n const id = getRowIdentity(row, rowKey);\n const data = id && treeData[id];\n if (id && data && ('expanded' in data)) {\n const oldExpanded = data.expanded;\n expanded = typeof expanded === 'undefined' ? !data.expanded : expanded;\n treeData[id].expanded = expanded;\n if (oldExpanded !== expanded) {\n this.table.$emit('expand-change', row, expanded);\n }\n this.updateTableScrollY();\n }\n },\n\n loadOrToggle(row) {\n this.assertRowKey();\n const { lazy, treeData, rowKey } = this.states;\n const id = getRowIdentity(row, rowKey);\n const data = treeData[id];\n if (lazy && data && 'loaded' in data && !data.loaded) {\n this.loadData(row, id, data);\n } else {\n this.toggleTreeExpansion(row);\n }\n },\n\n loadData(row, key, treeNode) {\n const { load } = this.table;\n const { treeData: rawTreeData } = this.states;\n if (load && !rawTreeData[key].loaded) {\n rawTreeData[key].loading = true;\n load(row, treeNode, data => {\n if (!Array.isArray(data)) {\n throw new Error('[ElTable] data must be an array');\n }\n const { lazyTreeNodeMap, treeData } = this.states;\n treeData[key].loading = false;\n treeData[key].loaded = true;\n treeData[key].expanded = true;\n if (data.length) {\n this.$set(lazyTreeNodeMap, key, data);\n }\n this.table.$emit('expand-change', row, true);\n });\n }\n }\n }\n};\n","import Vue from 'vue';\nimport merge from 'element-ui/src/utils/merge';\nimport { getKeysMap, getRowIdentity, getColumnById, getColumnByKey, orderBy, toggleRowStatus } from '../util';\nimport expand from './expand';\nimport current from './current';\nimport tree from './tree';\n\nconst sortData = (data, states) => {\n const sortingColumn = states.sortingColumn;\n if (!sortingColumn || typeof sortingColumn.sortable === 'string') {\n return data;\n }\n return orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);\n};\n\nconst doFlattenColumns = (columns) => {\n const result = [];\n columns.forEach((column) => {\n if (column.children) {\n result.push.apply(result, doFlattenColumns(column.children));\n } else {\n result.push(column);\n }\n });\n return result;\n};\n\nexport default Vue.extend({\n data() {\n return {\n states: {\n // 3.0 版本后要求必须设置该属性\n rowKey: null,\n\n // 渲染的数据来源,是对 table 中的 data 过滤排序后的结果\n data: [],\n\n // 是否包含固定列\n isComplex: false,\n\n // 列\n _columns: [], // 不可响应的\n originColumns: [],\n columns: [],\n fixedColumns: [],\n rightFixedColumns: [],\n leafColumns: [],\n fixedLeafColumns: [],\n rightFixedLeafColumns: [],\n leafColumnsLength: 0,\n fixedLeafColumnsLength: 0,\n rightFixedLeafColumnsLength: 0,\n\n // 选择\n isAllSelected: false,\n selection: [],\n reserveSelection: false,\n selectOnIndeterminate: false,\n selectable: null,\n\n // 过滤\n filters: {}, // 不可响应的\n filteredData: null,\n\n // 排序\n sortingColumn: null,\n sortProp: null,\n sortOrder: null,\n\n hoverRow: null\n }\n };\n },\n\n mixins: [expand, current, tree],\n\n methods: {\n // 检查 rowKey 是否存在\n assertRowKey() {\n const rowKey = this.states.rowKey;\n if (!rowKey) throw new Error('[ElTable] prop row-key is required');\n },\n\n // 更新列\n updateColumns() {\n const states = this.states;\n const _columns = states._columns || [];\n states.fixedColumns = _columns.filter((column) => column.fixed === true || column.fixed === 'left');\n states.rightFixedColumns = _columns.filter((column) => column.fixed === 'right');\n\n if (states.fixedColumns.length > 0 && _columns[0] && _columns[0].type === 'selection' && !_columns[0].fixed) {\n _columns[0].fixed = true;\n states.fixedColumns.unshift(_columns[0]);\n }\n\n const notFixedColumns = _columns.filter(column => !column.fixed);\n states.originColumns = [].concat(states.fixedColumns).concat(notFixedColumns).concat(states.rightFixedColumns);\n\n const leafColumns = doFlattenColumns(notFixedColumns);\n const fixedLeafColumns = doFlattenColumns(states.fixedColumns);\n const rightFixedLeafColumns = doFlattenColumns(states.rightFixedColumns);\n\n states.leafColumnsLength = leafColumns.length;\n states.fixedLeafColumnsLength = fixedLeafColumns.length;\n states.rightFixedLeafColumnsLength = rightFixedLeafColumns.length;\n\n states.columns = [].concat(fixedLeafColumns).concat(leafColumns).concat(rightFixedLeafColumns);\n states.isComplex = states.fixedColumns.length > 0 || states.rightFixedColumns.length > 0;\n },\n\n // 更新 DOM\n scheduleLayout(needUpdateColumns) {\n if (needUpdateColumns) {\n this.updateColumns();\n }\n this.table.debouncedUpdateLayout();\n },\n\n // 选择\n isSelected(row) {\n const { selection = [] } = this.states;\n return selection.indexOf(row) > -1;\n },\n\n clearSelection() {\n const states = this.states;\n states.isAllSelected = false;\n const oldSelection = states.selection;\n if (oldSelection.length) {\n states.selection = [];\n this.table.$emit('selection-change', []);\n }\n },\n\n cleanSelection() {\n const states = this.states;\n const { data, rowKey, selection } = states;\n let deleted;\n if (rowKey) {\n deleted = [];\n const selectedMap = getKeysMap(selection, rowKey);\n const dataMap = getKeysMap(data, rowKey);\n for (let key in selectedMap) {\n if (selectedMap.hasOwnProperty(key) && !dataMap[key]) {\n deleted.push(selectedMap[key].row);\n }\n }\n } else {\n deleted = selection.filter(item => data.indexOf(item) === -1);\n }\n if (deleted.length) {\n const newSelection = selection.filter(item => deleted.indexOf(item) === -1);\n states.selection = newSelection;\n this.table.$emit('selection-change', newSelection.slice());\n }\n },\n\n toggleRowSelection(row, selected, emitChange = true) {\n const changed = toggleRowStatus(this.states.selection, row, selected);\n if (changed) {\n const newSelection = (this.states.selection || []).slice();\n // 调用 API 修改选中值,不触发 select 事件\n if (emitChange) {\n this.table.$emit('select', newSelection, row);\n }\n this.table.$emit('selection-change', newSelection);\n }\n },\n\n _toggleAllSelection() {\n const states = this.states;\n const { data = [], selection } = states;\n // when only some rows are selected (but not all), select or deselect all of them\n // depending on the value of selectOnIndeterminate\n const value = states.selectOnIndeterminate\n ? !states.isAllSelected\n : !(states.isAllSelected || selection.length);\n states.isAllSelected = value;\n\n let selectionChanged = false;\n data.forEach((row, index) => {\n if (states.selectable) {\n if (states.selectable.call(null, row, index) && toggleRowStatus(selection, row, value)) {\n selectionChanged = true;\n }\n } else {\n if (toggleRowStatus(selection, row, value)) {\n selectionChanged = true;\n }\n }\n });\n\n if (selectionChanged) {\n this.table.$emit('selection-change', selection ? selection.slice() : []);\n }\n this.table.$emit('select-all', selection);\n },\n\n updateSelectionByRowKey() {\n const states = this.states;\n const { selection, rowKey, data } = states;\n const selectedMap = getKeysMap(selection, rowKey);\n data.forEach(row => {\n const rowId = getRowIdentity(row, rowKey);\n const rowInfo = selectedMap[rowId];\n if (rowInfo) {\n selection[rowInfo.index] = row;\n }\n });\n },\n\n updateAllSelected() {\n const states = this.states;\n const { selection, rowKey, selectable } = states;\n // data 为 null 时,解构时的默认值会被忽略\n const data = states.data || [];\n if (data.length === 0) {\n states.isAllSelected = false;\n return;\n }\n\n let selectedMap;\n if (rowKey) {\n selectedMap = getKeysMap(selection, rowKey);\n }\n const isSelected = function(row) {\n if (selectedMap) {\n return !!selectedMap[getRowIdentity(row, rowKey)];\n } else {\n return selection.indexOf(row) !== -1;\n }\n };\n let isAllSelected = true;\n let selectedCount = 0;\n for (let i = 0, j = data.length; i < j; i++) {\n const item = data[i];\n const isRowSelectable = selectable && selectable.call(null, item, i);\n if (!isSelected(item)) {\n if (!selectable || isRowSelectable) {\n isAllSelected = false;\n break;\n }\n } else {\n selectedCount++;\n }\n }\n\n if (selectedCount === 0) isAllSelected = false;\n states.isAllSelected = isAllSelected;\n },\n\n // 过滤与排序\n updateFilters(columns, values) {\n if (!Array.isArray(columns)) {\n columns = [columns];\n }\n const states = this.states;\n const filters = {};\n columns.forEach(col => {\n states.filters[col.id] = values;\n filters[col.columnKey || col.id] = values;\n });\n\n return filters;\n },\n\n updateSort(column, prop, order) {\n if (this.states.sortingColumn && this.states.sortingColumn !== column) {\n this.states.sortingColumn.order = null;\n }\n this.states.sortingColumn = column;\n this.states.sortProp = prop;\n this.states.sortOrder = order;\n },\n\n execFilter() {\n const states = this.states;\n const { _data, filters } = states;\n let data = _data;\n\n Object.keys(filters).forEach((columnId) => {\n const values = states.filters[columnId];\n if (!values || values.length === 0) return;\n const column = getColumnById(this.states, columnId);\n if (column && column.filterMethod) {\n data = data.filter((row) => {\n return values.some(value => column.filterMethod.call(null, value, row, column));\n });\n }\n });\n\n states.filteredData = data;\n },\n\n execSort() {\n const states = this.states;\n states.data = sortData(states.filteredData, states);\n },\n\n // 根据 filters 与 sort 去过滤 data\n execQuery(ignore) {\n if (!(ignore && ignore.filter)) {\n this.execFilter();\n }\n this.execSort();\n },\n\n clearFilter(columnKeys) {\n const states = this.states;\n const { tableHeader, fixedTableHeader, rightFixedTableHeader } = this.table.$refs;\n\n let panels = {};\n if (tableHeader) panels = merge(panels, tableHeader.filterPanels);\n if (fixedTableHeader) panels = merge(panels, fixedTableHeader.filterPanels);\n if (rightFixedTableHeader) panels = merge(panels, rightFixedTableHeader.filterPanels);\n\n const keys = Object.keys(panels);\n if (!keys.length) return;\n\n if (typeof columnKeys === 'string') {\n columnKeys = [columnKeys];\n }\n\n if (Array.isArray(columnKeys)) {\n const columns = columnKeys.map(key => getColumnByKey(states, key));\n keys.forEach(key => {\n const column = columns.find(col => col.id === key);\n if (column) {\n // TODO: 优化这里的代码\n panels[key].filteredValue = [];\n }\n });\n this.commit('filterChange', {\n column: columns,\n values: [],\n silent: true,\n multi: true\n });\n } else {\n keys.forEach(key => {\n // TODO: 优化这里的代码\n panels[key].filteredValue = [];\n });\n\n states.filters = {};\n this.commit('filterChange', {\n column: {},\n values: [],\n silent: true\n });\n }\n },\n\n clearSort() {\n const states = this.states;\n if (!states.sortingColumn) return;\n\n this.updateSort(null, null, null);\n this.commit('changeSortCondition', {\n silent: true\n });\n },\n\n // 适配层,expand-row-keys 在 Expand 与 TreeTable 中都有使用\n setExpandRowKeysAdapter(val) {\n // 这里会触发额外的计算,但为了兼容性,暂时这么做\n this.setExpandRowKeys(val);\n this.updateTreeExpandKeys(val);\n },\n\n // 展开行与 TreeTable 都要使用\n toggleRowExpansionAdapter(row, expanded) {\n const hasExpandColumn = this.states.columns.some(({ type }) => type === 'expand');\n if (hasExpandColumn) {\n this.toggleRowExpansion(row, expanded);\n } else {\n this.toggleTreeExpansion(row, expanded);\n }\n }\n }\n});\n","import Vue from 'vue';\nimport Watcher from './watcher';\nimport { arrayFind } from 'element-ui/src/utils/util';\n\nWatcher.prototype.mutations = {\n setData(states, data) {\n const dataInstanceChanged = states._data !== data;\n states._data = data;\n\n this.execQuery();\n // 数据变化,更新部分数据。\n // 没有使用 computed,而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n this.updateCurrentRowData();\n this.updateExpandRows();\n if (states.reserveSelection) {\n this.assertRowKey();\n this.updateSelectionByRowKey();\n } else {\n if (dataInstanceChanged) {\n this.clearSelection();\n } else {\n this.cleanSelection();\n }\n }\n this.updateAllSelected();\n\n this.updateTableScrollY();\n },\n\n insertColumn(states, column, index, parent) {\n let array = states._columns;\n if (parent) {\n array = parent.children;\n if (!array) array = parent.children = [];\n }\n\n if (typeof index !== 'undefined') {\n array.splice(index, 0, column);\n } else {\n array.push(column);\n }\n\n if (column.type === 'selection') {\n states.selectable = column.selectable;\n states.reserveSelection = column.reserveSelection;\n }\n\n if (this.table.$ready) {\n this.updateColumns(); // hack for dynamics insert column\n this.scheduleLayout();\n }\n },\n\n removeColumn(states, column, parent) {\n let array = states._columns;\n if (parent) {\n array = parent.children;\n if (!array) array = parent.children = [];\n }\n if (array) {\n array.splice(array.indexOf(column), 1);\n }\n\n if (this.table.$ready) {\n this.updateColumns(); // hack for dynamics remove column\n this.scheduleLayout();\n }\n },\n\n sort(states, options) {\n const { prop, order, init } = options;\n if (prop) {\n const column = arrayFind(states.columns, column => column.property === prop);\n if (column) {\n column.order = order;\n this.updateSort(column, prop, order);\n this.commit('changeSortCondition', { init });\n }\n }\n },\n\n changeSortCondition(states, options) {\n // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n const { sortingColumn: column, sortProp: prop, sortOrder: order } = states;\n if (order === null) {\n states.sortingColumn = null;\n states.sortProp = null;\n }\n const ingore = { filter: true };\n this.execQuery(ingore);\n\n if (!options || !(options.silent || options.init)) {\n this.table.$emit('sort-change', {\n column,\n prop,\n order\n });\n }\n\n this.updateTableScrollY();\n },\n\n filterChange(states, options) {\n let { column, values, silent } = options;\n const newFilters = this.updateFilters(column, values);\n\n this.execQuery();\n\n if (!silent) {\n this.table.$emit('filter-change', newFilters);\n }\n\n this.updateTableScrollY();\n },\n\n toggleAllSelection() {\n this.toggleAllSelection();\n },\n\n rowSelectedChanged(states, row) {\n this.toggleRowSelection(row);\n this.updateAllSelected();\n },\n\n setHoverRow(states, row) {\n states.hoverRow = row;\n },\n\n setCurrentRow(states, row) {\n this.updateCurrentRow(row);\n }\n};\n\nWatcher.prototype.commit = function(name, ...args) {\n const mutations = this.mutations;\n if (mutations[name]) {\n mutations[name].apply(this, [this.states].concat(args));\n } else {\n throw new Error(`Action not found: ${name}`);\n }\n};\n\nWatcher.prototype.updateTableScrollY = function() {\n Vue.nextTick(this.table.updateScrollY);\n};\n\nexport default Watcher;\n","import Store from './index';\nimport debounce from 'throttle-debounce/debounce';\n\nexport function createStore(table, initialState = {}) {\n if (!table) {\n throw new Error('Table is required.');\n }\n\n const store = new Store();\n store.table = table;\n // fix https://github.com/ElemeFE/element/issues/14075\n // related pr https://github.com/ElemeFE/element/pull/14146\n store.toggleAllSelection = debounce(10, store._toggleAllSelection);\n Object.keys(initialState).forEach(key => {\n store.states[key] = initialState[key];\n });\n return store;\n}\n\nexport function mapStates(mapper) {\n const res = {};\n Object.keys(mapper).forEach(key => {\n const value = mapper[key];\n let fn;\n if (typeof value === 'string') {\n fn = function() {\n return this.store.states[value];\n };\n } else if (typeof value === 'function') {\n fn = function() {\n return value.call(this, this.store.states);\n };\n } else {\n console.error('invalid value type');\n }\n if (fn) {\n res[key] = fn;\n }\n });\n return res;\n};\n","import Vue from 'vue';\nimport scrollbarWidth from 'element-ui/src/utils/scrollbar-width';\nimport { parseHeight } from './util';\n\nclass TableLayout {\n constructor(options) {\n this.observers = [];\n this.table = null;\n this.store = null;\n this.columns = null;\n this.fit = true;\n this.showHeader = true;\n\n this.height = null;\n this.scrollX = false;\n this.scrollY = false;\n this.bodyWidth = null;\n this.fixedWidth = null;\n this.rightFixedWidth = null;\n this.tableHeight = null;\n this.headerHeight = 44; // Table Header Height\n this.appendHeight = 0; // Append Slot Height\n this.footerHeight = 44; // Table Footer Height\n this.viewportHeight = null; // Table Height - Scroll Bar Height\n this.bodyHeight = null; // Table Height - Table Header Height\n this.fixedBodyHeight = null; // Table Height - Table Header Height - Scroll Bar Height\n this.gutterWidth = scrollbarWidth();\n\n for (let name in options) {\n if (options.hasOwnProperty(name)) {\n this[name] = options[name];\n }\n }\n\n if (!this.table) {\n throw new Error('table is required for Table Layout');\n }\n if (!this.store) {\n throw new Error('store is required for Table Layout');\n }\n }\n\n updateScrollY() {\n const height = this.height;\n if (height === null) return false;\n const bodyWrapper = this.table.bodyWrapper;\n if (this.table.$el && bodyWrapper) {\n const body = bodyWrapper.querySelector('.el-table__body');\n const prevScrollY = this.scrollY;\n const scrollY = body.offsetHeight > this.bodyHeight;\n this.scrollY = scrollY;\n return prevScrollY !== scrollY;\n }\n return false;\n }\n\n setHeight(value, prop = 'height') {\n if (Vue.prototype.$isServer) return;\n const el = this.table.$el;\n value = parseHeight(value);\n this.height = value;\n\n if (!el && (value || value === 0)) return Vue.nextTick(() => this.setHeight(value, prop));\n\n if (typeof value === 'number') {\n el.style[prop] = value + 'px';\n this.updateElsHeight();\n } else if (typeof value === 'string') {\n el.style[prop] = value;\n this.updateElsHeight();\n }\n }\n\n setMaxHeight(value) {\n this.setHeight(value, 'max-height');\n }\n\n getFlattenColumns() {\n const flattenColumns = [];\n const columns = this.table.columns;\n columns.forEach((column) => {\n if (column.isColumnGroup) {\n flattenColumns.push.apply(flattenColumns, column.columns);\n } else {\n flattenColumns.push(column);\n }\n });\n\n return flattenColumns;\n }\n\n updateElsHeight() {\n if (!this.table.$ready) return Vue.nextTick(() => this.updateElsHeight());\n const { headerWrapper, appendWrapper, footerWrapper } = this.table.$refs;\n this.appendHeight = appendWrapper ? appendWrapper.offsetHeight : 0;\n\n if (this.showHeader && !headerWrapper) return;\n\n // fix issue (https://github.com/ElemeFE/element/pull/16956)\n const headerTrElm = headerWrapper ? headerWrapper.querySelector('.el-table__header tr') : null;\n const noneHeader = this.headerDisplayNone(headerTrElm);\n\n const headerHeight = this.headerHeight = !this.showHeader ? 0 : headerWrapper.offsetHeight;\n if (this.showHeader && !noneHeader && headerWrapper.offsetWidth > 0 && (this.table.columns || []).length > 0 && headerHeight < 2) {\n return Vue.nextTick(() => this.updateElsHeight());\n }\n const tableHeight = this.tableHeight = this.table.$el.clientHeight;\n const footerHeight = this.footerHeight = footerWrapper ? footerWrapper.offsetHeight : 0;\n if (this.height !== null) {\n this.bodyHeight = tableHeight - headerHeight - footerHeight + (footerWrapper ? 1 : 0);\n }\n this.fixedBodyHeight = this.scrollX ? (this.bodyHeight - this.gutterWidth) : this.bodyHeight;\n\n const noData = !(this.store.states.data && this.store.states.data.length);\n this.viewportHeight = this.scrollX ? tableHeight - (noData ? 0 : this.gutterWidth) : tableHeight;\n this.updateScrollY();\n this.notifyObservers('scrollable');\n }\n\n headerDisplayNone(elm) {\n if (!elm) return true;\n let headerChild = elm;\n while (headerChild.tagName !== 'DIV') {\n if (getComputedStyle(headerChild).display === 'none') {\n return true;\n }\n headerChild = headerChild.parentElement;\n }\n return false;\n }\n\n updateColumnsWidth() {\n if (Vue.prototype.$isServer) return;\n const fit = this.fit;\n const bodyWidth = this.table.$el.clientWidth;\n let bodyMinWidth = 0;\n\n const flattenColumns = this.getFlattenColumns();\n let flexColumns = flattenColumns.filter((column) => typeof column.width !== 'number');\n\n flattenColumns.forEach((column) => { // Clean those columns whose width changed from flex to unflex\n if (typeof column.width === 'number' && column.realWidth) column.realWidth = null;\n });\n\n if (flexColumns.length > 0 && fit) {\n flattenColumns.forEach((column) => {\n bodyMinWidth += column.width || column.minWidth || 80;\n });\n\n const scrollYWidth = this.scrollY ? this.gutterWidth : 0;\n\n if (bodyMinWidth <= bodyWidth - scrollYWidth) { // DON'T HAVE SCROLL BAR\n this.scrollX = false;\n\n const totalFlexWidth = bodyWidth - scrollYWidth - bodyMinWidth;\n\n if (flexColumns.length === 1) {\n flexColumns[0].realWidth = (flexColumns[0].minWidth || 80) + totalFlexWidth;\n } else {\n const allColumnsWidth = flexColumns.reduce((prev, column) => prev + (column.minWidth || 80), 0);\n const flexWidthPerPixel = totalFlexWidth / allColumnsWidth;\n let noneFirstWidth = 0;\n\n flexColumns.forEach((column, index) => {\n if (index === 0) return;\n const flexWidth = Math.floor((column.minWidth || 80) * flexWidthPerPixel);\n noneFirstWidth += flexWidth;\n column.realWidth = (column.minWidth || 80) + flexWidth;\n });\n\n flexColumns[0].realWidth = (flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth;\n }\n } else { // HAVE HORIZONTAL SCROLL BAR\n this.scrollX = true;\n flexColumns.forEach(function(column) {\n column.realWidth = column.minWidth;\n });\n }\n\n this.bodyWidth = Math.max(bodyMinWidth, bodyWidth);\n this.table.resizeState.width = this.bodyWidth;\n } else {\n flattenColumns.forEach((column) => {\n if (!column.width && !column.minWidth) {\n column.realWidth = 80;\n } else {\n column.realWidth = column.width || column.minWidth;\n }\n\n bodyMinWidth += column.realWidth;\n });\n this.scrollX = bodyMinWidth > bodyWidth;\n\n this.bodyWidth = bodyMinWidth;\n }\n\n const fixedColumns = this.store.states.fixedColumns;\n\n if (fixedColumns.length > 0) {\n let fixedWidth = 0;\n fixedColumns.forEach(function(column) {\n fixedWidth += column.realWidth || column.width;\n });\n\n this.fixedWidth = fixedWidth;\n }\n\n const rightFixedColumns = this.store.states.rightFixedColumns;\n if (rightFixedColumns.length > 0) {\n let rightFixedWidth = 0;\n rightFixedColumns.forEach(function(column) {\n rightFixedWidth += column.realWidth || column.width;\n });\n\n this.rightFixedWidth = rightFixedWidth;\n }\n\n this.notifyObservers('columns');\n }\n\n addObserver(observer) {\n this.observers.push(observer);\n }\n\n removeObserver(observer) {\n const index = this.observers.indexOf(observer);\n if (index !== -1) {\n this.observers.splice(index, 1);\n }\n }\n\n notifyObservers(event) {\n const observers = this.observers;\n observers.forEach((observer) => {\n switch (event) {\n case 'columns':\n observer.onColumnsChange(this);\n break;\n case 'scrollable':\n observer.onScrollableChange(this);\n break;\n default:\n throw new Error(`Table Layout don't have event ${event}.`);\n }\n });\n }\n}\n\nexport default TableLayout;\n","import Popper from 'element-ui/src/utils/vue-popper';\nimport debounce from 'throttle-debounce/debounce';\nimport { addClass, removeClass, on, off } from 'element-ui/src/utils/dom';\nimport { generateId } from 'element-ui/src/utils/util';\nimport Vue from 'vue';\n\nexport default {\n name: 'ElTooltip',\n\n mixins: [Popper],\n\n props: {\n openDelay: {\n type: Number,\n default: 0\n },\n disabled: Boolean,\n manual: Boolean,\n effect: {\n type: String,\n default: 'dark'\n },\n arrowOffset: {\n type: Number,\n default: 0\n },\n popperClass: String,\n content: String,\n visibleArrow: {\n default: true\n },\n transition: {\n type: String,\n default: 'el-fade-in-linear'\n },\n popperOptions: {\n default() {\n return {\n boundariesPadding: 10,\n gpuAcceleration: false\n };\n }\n },\n enterable: {\n type: Boolean,\n default: true\n },\n hideAfter: {\n type: Number,\n default: 0\n },\n tabindex: {\n type: Number,\n default: 0\n }\n },\n\n data() {\n return {\n tooltipId: `el-tooltip-${generateId()}`,\n timeoutPending: null,\n focusing: false\n };\n },\n beforeCreate() {\n if (this.$isServer) return;\n\n this.popperVM = new Vue({\n data: { node: '' },\n render(h) {\n return this.node;\n }\n }).$mount();\n\n this.debounceClose = debounce(200, () => this.handleClosePopper());\n },\n\n render(h) {\n if (this.popperVM) {\n this.popperVM.node = (\n \n { this.setExpectedState(false); this.debounceClose(); } }\n onMouseenter= { () => { this.setExpectedState(true); } }\n ref=\"popper\"\n role=\"tooltip\"\n id={this.tooltipId}\n aria-hidden={ (this.disabled || !this.showPopper) ? 'true' : 'false' }\n v-show={!this.disabled && this.showPopper}\n class={\n ['el-tooltip__popper', 'is-' + this.effect, this.popperClass]\n }>\n { this.$slots.content || this.content }\n \n );\n }\n\n const firstElement = this.getFirstElement();\n if (!firstElement) return null;\n\n const data = firstElement.data = firstElement.data || {};\n data.staticClass = this.addTooltipClass(data.staticClass);\n\n return firstElement;\n },\n\n mounted() {\n this.referenceElm = this.$el;\n if (this.$el.nodeType === 1) {\n this.$el.setAttribute('aria-describedby', this.tooltipId);\n this.$el.setAttribute('tabindex', this.tabindex);\n on(this.referenceElm, 'mouseenter', this.show);\n on(this.referenceElm, 'mouseleave', this.hide);\n on(this.referenceElm, 'focus', () => {\n if (!this.$slots.default || !this.$slots.default.length) {\n this.handleFocus();\n return;\n }\n const instance = this.$slots.default[0].componentInstance;\n if (instance && instance.focus) {\n instance.focus();\n } else {\n this.handleFocus();\n }\n });\n on(this.referenceElm, 'blur', this.handleBlur);\n on(this.referenceElm, 'click', this.removeFocusing);\n }\n // fix issue https://github.com/ElemeFE/element/issues/14424\n if (this.value && this.popperVM) {\n this.popperVM.$nextTick(() => {\n if (this.value) {\n this.updatePopper();\n }\n });\n }\n },\n watch: {\n focusing(val) {\n if (val) {\n addClass(this.referenceElm, 'focusing');\n } else {\n removeClass(this.referenceElm, 'focusing');\n }\n }\n },\n methods: {\n show() {\n this.setExpectedState(true);\n this.handleShowPopper();\n },\n\n hide() {\n this.setExpectedState(false);\n this.debounceClose();\n },\n handleFocus() {\n this.focusing = true;\n this.show();\n },\n handleBlur() {\n this.focusing = false;\n this.hide();\n },\n removeFocusing() {\n this.focusing = false;\n },\n\n addTooltipClass(prev) {\n if (!prev) {\n return 'el-tooltip';\n } else {\n return 'el-tooltip ' + prev.replace('el-tooltip', '');\n }\n },\n\n handleShowPopper() {\n if (!this.expectedState || this.manual) return;\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.showPopper = true;\n }, this.openDelay);\n\n if (this.hideAfter > 0) {\n this.timeoutPending = setTimeout(() => {\n this.showPopper = false;\n }, this.hideAfter);\n }\n },\n\n handleClosePopper() {\n if (this.enterable && this.expectedState || this.manual) return;\n clearTimeout(this.timeout);\n\n if (this.timeoutPending) {\n clearTimeout(this.timeoutPending);\n }\n this.showPopper = false;\n\n if (this.disabled) {\n this.doDestroy();\n }\n },\n\n setExpectedState(expectedState) {\n if (expectedState === false) {\n clearTimeout(this.timeoutPending);\n }\n this.expectedState = expectedState;\n },\n\n getFirstElement() {\n const slots = this.$slots.default;\n if (!Array.isArray(slots)) return null;\n let element = null;\n for (let index = 0; index < slots.length; index++) {\n if (slots[index] && slots[index].tag) {\n element = slots[index];\n break;\n };\n }\n return element;\n }\n },\n\n beforeDestroy() {\n this.popperVM && this.popperVM.$destroy();\n },\n\n destroyed() {\n const reference = this.referenceElm;\n if (reference.nodeType === 1) {\n off(reference, 'mouseenter', this.show);\n off(reference, 'mouseleave', this.hide);\n off(reference, 'focus', this.handleFocus);\n off(reference, 'blur', this.handleBlur);\n off(reference, 'click', this.removeFocusing);\n }\n }\n};\n","import Tooltip from './src/main';\n\n/* istanbul ignore next */\nTooltip.install = function(Vue) {\n Vue.component(Tooltip.name, Tooltip);\n};\n\nexport default Tooltip;\n","export default {\n created() {\n this.tableLayout.addObserver(this);\n },\n\n destroyed() {\n this.tableLayout.removeObserver(this);\n },\n\n computed: {\n tableLayout() {\n let layout = this.layout;\n if (!layout && this.table) {\n layout = this.table.layout;\n }\n if (!layout) {\n throw new Error('Can not find table layout.');\n }\n return layout;\n }\n },\n\n mounted() {\n this.onColumnsChange(this.tableLayout);\n this.onScrollableChange(this.tableLayout);\n },\n\n updated() {\n if (this.__updated__) return;\n this.onColumnsChange(this.tableLayout);\n this.onScrollableChange(this.tableLayout);\n this.__updated__ = true;\n },\n\n methods: {\n onColumnsChange(layout) {\n const cols = this.$el.querySelectorAll('colgroup > col');\n if (!cols.length) return;\n const flattenColumns = layout.getFlattenColumns();\n const columnsMap = {};\n flattenColumns.forEach((column) => {\n columnsMap[column.id] = column;\n });\n for (let i = 0, j = cols.length; i < j; i++) {\n const col = cols[i];\n const name = col.getAttribute('name');\n const column = columnsMap[name];\n if (column) {\n col.setAttribute('width', column.realWidth || column.width);\n }\n }\n },\n\n onScrollableChange(layout) {\n const cols = this.$el.querySelectorAll('colgroup > col[name=gutter]');\n for (let i = 0, j = cols.length; i < j; i++) {\n const col = cols[i];\n col.setAttribute('width', layout.scrollY ? layout.gutterWidth : '0');\n }\n const ths = this.$el.querySelectorAll('th.gutter');\n for (let i = 0, j = ths.length; i < j; i++) {\n const th = ths[i];\n th.style.width = layout.scrollY ? layout.gutterWidth + 'px' : '0';\n th.style.display = layout.scrollY ? '' : 'none';\n }\n }\n }\n};\n","import ElCheckbox from 'element-ui/packages/checkbox';\nexport default {\n name: 'ElTableRow',\n props: [\n 'columns',\n 'row',\n 'index',\n 'isSelected',\n 'isExpanded',\n 'store',\n 'context',\n 'firstDefaultColumnIndex',\n 'treeRowData',\n 'treeIndent',\n 'columnsHidden',\n 'getSpan',\n 'getColspanRealWidth',\n 'getCellStyle',\n 'getCellClass',\n 'handleCellMouseLeave',\n 'handleCellMouseEnter',\n 'fixed'\n ],\n components: {\n ElCheckbox\n },\n render() {\n const {\n columns,\n row,\n index: $index,\n store,\n context,\n firstDefaultColumnIndex,\n treeRowData,\n treeIndent,\n columnsHidden = [],\n isSelected,\n isExpanded\n } = this;\n\n return (\n \n {\n columns.map((column, cellIndex) => {\n const { rowspan, colspan } = this.getSpan(row, column, $index, cellIndex);\n if (!rowspan || !colspan) {\n return null;\n }\n const columnData = { ...column };\n columnData.realWidth = this.getColspanRealWidth(columns, colspan, cellIndex);\n const data = {\n store,\n isSelected,\n isExpanded,\n _self: context,\n column: columnData,\n row,\n $index\n };\n if (cellIndex === firstDefaultColumnIndex && treeRowData) {\n data.treeNode = {\n indent: treeRowData.level * treeIndent,\n level: treeRowData.level\n };\n if (typeof treeRowData.expanded === 'boolean') {\n data.treeNode.expanded = treeRowData.expanded;\n // 表明是懒加载\n if ('loading' in treeRowData) {\n data.treeNode.loading = treeRowData.loading;\n }\n if ('noLazyChildren' in treeRowData) {\n data.treeNode.noLazyChildren = treeRowData.noLazyChildren;\n }\n }\n }\n return (\n this.handleCellMouseEnter($event, row)}\n on-mouseleave={this.handleCellMouseLeave}\n >\n {\n column.renderCell.call(\n this._renderProxy,\n this.$createElement,\n data,\n columnsHidden[cellIndex]\n )\n }\n \n );\n })\n }\n \n );\n }\n};\n","import { arrayFindIndex } from 'element-ui/src/utils/util';\nimport { getCell, getColumnByCell, getRowIdentity } from './util';\nimport { getStyle, hasClass, removeClass, addClass } from 'element-ui/src/utils/dom';\nimport ElCheckbox from 'element-ui/packages/checkbox';\nimport ElTooltip from 'element-ui/packages/tooltip';\nimport debounce from 'throttle-debounce/debounce';\nimport LayoutObserver from './layout-observer';\nimport { mapStates } from './store/helper';\nimport TableRow from './table-row.js';\n\nexport default {\n name: 'ElTableBody',\n\n mixins: [LayoutObserver],\n\n components: {\n ElCheckbox,\n ElTooltip,\n TableRow\n },\n\n props: {\n store: {\n required: true\n },\n stripe: Boolean,\n context: {},\n rowClassName: [String, Function],\n rowStyle: [Object, Function],\n fixed: String,\n highlight: Boolean\n },\n\n render(h) {\n const data = this.data || [];\n return (\n \n \n {\n this.columns.map(column => )\n }\n \n \n {\n data.reduce((acc, row) => {\n return acc.concat(this.wrappedRowRender(row, acc.length));\n }, [])\n }\n \n \n \n );\n },\n\n computed: {\n table() {\n return this.$parent;\n },\n\n ...mapStates({\n data: 'data',\n columns: 'columns',\n treeIndent: 'indent',\n leftFixedLeafCount: 'fixedLeafColumnsLength',\n rightFixedLeafCount: 'rightFixedLeafColumnsLength',\n columnsCount: states => states.columns.length,\n leftFixedCount: states => states.fixedColumns.length,\n rightFixedCount: states => states.rightFixedColumns.length,\n hasExpandColumn: states => states.columns.some(({ type }) => type === 'expand')\n }),\n\n columnsHidden() {\n return this.columns.map((column, index) => this.isColumnHidden(index));\n },\n\n firstDefaultColumnIndex() {\n return arrayFindIndex(this.columns, ({ type }) => type === 'default');\n }\n },\n\n watch: {\n // don't trigger getter of currentRow in getCellClass. see https://jsfiddle.net/oe2b4hqt/\n // update DOM manually. see https://github.com/ElemeFE/element/pull/13954/files#diff-9b450c00d0a9dec0ffad5a3176972e40\n 'store.states.hoverRow'(newVal, oldVal) {\n if (!this.store.states.isComplex || this.$isServer) return;\n let raf = window.requestAnimationFrame;\n if (!raf) {\n raf = (fn) => setTimeout(fn, 16);\n }\n raf(() => {\n const rows = this.$el.querySelectorAll('.el-table__row');\n const oldRow = rows[oldVal];\n const newRow = rows[newVal];\n if (oldRow) {\n removeClass(oldRow, 'hover-row');\n }\n if (newRow) {\n addClass(newRow, 'hover-row');\n }\n });\n }\n },\n\n data() {\n return {\n tooltipContent: ''\n };\n },\n\n created() {\n this.activateTooltip = debounce(50, tooltip => tooltip.handleShowPopper());\n },\n\n methods: {\n getKeyOfRow(row, index) {\n const rowKey = this.table.rowKey;\n if (rowKey) {\n return getRowIdentity(row, rowKey);\n }\n return index;\n },\n\n isColumnHidden(index) {\n if (this.fixed === true || this.fixed === 'left') {\n return index >= this.leftFixedLeafCount;\n } else if (this.fixed === 'right') {\n return index < this.columnsCount - this.rightFixedLeafCount;\n } else {\n return (index < this.leftFixedLeafCount) || (index >= this.columnsCount - this.rightFixedLeafCount);\n }\n },\n\n getSpan(row, column, rowIndex, columnIndex) {\n let rowspan = 1;\n let colspan = 1;\n const fn = this.table.spanMethod;\n if (typeof fn === 'function') {\n const result = fn({\n row,\n column,\n rowIndex,\n columnIndex\n });\n if (Array.isArray(result)) {\n rowspan = result[0];\n colspan = result[1];\n } else if (typeof result === 'object') {\n rowspan = result.rowspan;\n colspan = result.colspan;\n }\n }\n return { rowspan, colspan };\n },\n\n getRowStyle(row, rowIndex) {\n const rowStyle = this.table.rowStyle;\n if (typeof rowStyle === 'function') {\n return rowStyle.call(null, {\n row,\n rowIndex\n });\n }\n return rowStyle || null;\n },\n\n getRowClass(row, rowIndex) {\n const classes = ['el-table__row'];\n if (this.table.highlightCurrentRow && row === this.store.states.currentRow) {\n classes.push('current-row');\n }\n\n if (this.stripe && rowIndex % 2 === 1) {\n classes.push('el-table__row--striped');\n }\n const rowClassName = this.table.rowClassName;\n if (typeof rowClassName === 'string') {\n classes.push(rowClassName);\n } else if (typeof rowClassName === 'function') {\n classes.push(rowClassName.call(null, {\n row,\n rowIndex\n }));\n }\n\n if (this.store.states.expandRows.indexOf(row) > -1) {\n classes.push('expanded');\n }\n\n return classes;\n },\n\n getCellStyle(rowIndex, columnIndex, row, column) {\n const cellStyle = this.table.cellStyle;\n if (typeof cellStyle === 'function') {\n return cellStyle.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n });\n }\n return cellStyle;\n },\n\n getCellClass(rowIndex, columnIndex, row, column) {\n const classes = [column.id, column.align, column.className];\n\n if (this.isColumnHidden(columnIndex)) {\n classes.push('is-hidden');\n }\n\n const cellClassName = this.table.cellClassName;\n if (typeof cellClassName === 'string') {\n classes.push(cellClassName);\n } else if (typeof cellClassName === 'function') {\n classes.push(cellClassName.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n }));\n }\n\n classes.push('el-table__cell');\n\n return classes.join(' ');\n },\n\n getColspanRealWidth(columns, colspan, index) {\n if (colspan < 1) {\n return columns[index].realWidth;\n }\n const widthArr = columns.map(({ realWidth }) => realWidth).slice(index, index + colspan);\n return widthArr.reduce((acc, width) => acc + width, -1);\n },\n\n handleCellMouseEnter(event, row) {\n const table = this.table;\n const cell = getCell(event);\n\n if (cell) {\n const column = getColumnByCell(table, cell);\n const hoverState = table.hoverState = { cell, column, row };\n table.$emit('cell-mouse-enter', hoverState.row, hoverState.column, hoverState.cell, event);\n }\n\n // 判断是否text-overflow, 如果是就显示tooltip\n const cellChild = event.target.querySelector('.cell');\n if (!(hasClass(cellChild, 'el-tooltip') && cellChild.childNodes.length)) {\n return;\n }\n // use range width instead of scrollWidth to determine whether the text is overflowing\n // to address a potential FireFox bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1074543#c3\n const range = document.createRange();\n range.setStart(cellChild, 0);\n range.setEnd(cellChild, cellChild.childNodes.length);\n const rangeWidth = range.getBoundingClientRect().width;\n const padding = (parseInt(getStyle(cellChild, 'paddingLeft'), 10) || 0) +\n (parseInt(getStyle(cellChild, 'paddingRight'), 10) || 0);\n if ((rangeWidth + padding > cellChild.offsetWidth || cellChild.scrollWidth > cellChild.offsetWidth) && this.$refs.tooltip) {\n const tooltip = this.$refs.tooltip;\n // TODO 会引起整个 Table 的重新渲染,需要优化\n this.tooltipContent = cell.innerText || cell.textContent;\n tooltip.referenceElm = cell;\n tooltip.$refs.popper && (tooltip.$refs.popper.style.display = 'none');\n tooltip.doDestroy();\n tooltip.setExpectedState(true);\n this.activateTooltip(tooltip);\n }\n },\n\n handleCellMouseLeave(event) {\n const tooltip = this.$refs.tooltip;\n if (tooltip) {\n tooltip.setExpectedState(false);\n tooltip.handleClosePopper();\n }\n const cell = getCell(event);\n if (!cell) return;\n\n const oldHoverState = this.table.hoverState || {};\n this.table.$emit('cell-mouse-leave', oldHoverState.row, oldHoverState.column, oldHoverState.cell, event);\n },\n\n handleMouseEnter: debounce(30, function(index) {\n this.store.commit('setHoverRow', index);\n }),\n\n handleMouseLeave: debounce(30, function() {\n this.store.commit('setHoverRow', null);\n }),\n\n handleContextMenu(event, row) {\n this.handleEvent(event, row, 'contextmenu');\n },\n\n handleDoubleClick(event, row) {\n this.handleEvent(event, row, 'dblclick');\n },\n\n handleClick(event, row) {\n this.store.commit('setCurrentRow', row);\n this.handleEvent(event, row, 'click');\n },\n\n handleEvent(event, row, name) {\n const table = this.table;\n const cell = getCell(event);\n let column;\n if (cell) {\n column = getColumnByCell(table, cell);\n if (column) {\n table.$emit(`cell-${name}`, row, column, cell, event);\n }\n }\n table.$emit(`row-${name}`, row, column, event);\n },\n\n rowRender(row, $index, treeRowData) {\n const { treeIndent, columns, firstDefaultColumnIndex } = this;\n const rowClasses = this.getRowClass(row, $index);\n let display = true;\n if (treeRowData) {\n rowClasses.push('el-table__row--level-' + treeRowData.level);\n display = treeRowData.display;\n }\n // 指令 v-show 会覆盖 row-style 中 display\n // 使用 :style 代替 v-show https://github.com/ElemeFE/element/issues/16995\n let displayStyle = display ? null : {\n display: 'none'\n };\n return (\n this.handleDoubleClick($event, row)}\n nativeOn-click={($event) => this.handleClick($event, row)}\n nativeOn-contextmenu={($event) => this.handleContextMenu($event, row)}\n nativeOn-mouseenter={_ => this.handleMouseEnter($index)}\n nativeOn-mouseleave={this.handleMouseLeave}\n columns={columns}\n row={row}\n index={$index}\n store={this.store}\n context={this.context || this.table.$vnode.context}\n firstDefaultColumnIndex={firstDefaultColumnIndex}\n treeRowData={treeRowData}\n treeIndent={treeIndent}\n columnsHidden={this.columnsHidden}\n getSpan={this.getSpan}\n getColspanRealWidth={this.getColspanRealWidth}\n getCellStyle={this.getCellStyle}\n getCellClass={this.getCellClass}\n handleCellMouseEnter={this.handleCellMouseEnter}\n handleCellMouseLeave={this.handleCellMouseLeave}\n isSelected={this.store.isSelected(row)}\n isExpanded={this.store.states.expandRows.indexOf(row) > -1}\n fixed={this.fixed}\n >\n \n );\n },\n\n wrappedRowRender(row, $index) {\n const store = this.store;\n const { isRowExpanded, assertRowKey } = store;\n const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } = store.states;\n if (this.hasExpandColumn && isRowExpanded(row)) {\n const renderExpanded = this.table.renderExpanded;\n const tr = this.rowRender(row, $index);\n if (!renderExpanded) {\n console.error('[Element Error]renderExpanded is required.');\n return tr;\n }\n // 使用二维数组,避免修改 $index\n return [[\n tr,\n \n \n { renderExpanded(this.$createElement, { row, $index, store: this.store }) }\n \n ]];\n } else if (Object.keys(treeData).length) {\n assertRowKey();\n // TreeTable 时,rowKey 必须由用户设定,不使用 getKeyOfRow 计算\n // 在调用 rowRender 函数时,仍然会计算 rowKey,不太好的操作\n const key = getRowIdentity(row, rowKey);\n let cur = treeData[key];\n let treeRowData = null;\n if (cur) {\n treeRowData = {\n expanded: cur.expanded,\n level: cur.level,\n display: true\n };\n if (typeof cur.lazy === 'boolean') {\n if (typeof cur.loaded === 'boolean' && cur.loaded) {\n treeRowData.noLazyChildren = !(cur.children && cur.children.length);\n }\n treeRowData.loading = cur.loading;\n }\n }\n const tmp = [this.rowRender(row, $index, treeRowData)];\n // 渲染嵌套数据\n if (cur) {\n // currentRow 记录的是 index,所以还需主动增加 TreeTable 的 index\n let i = 0;\n const traverse = (children, parent) => {\n if (!(children && children.length && parent)) return;\n children.forEach(node => {\n // 父节点的 display 状态影响子节点的显示状态\n const innerTreeRowData = {\n display: parent.display && parent.expanded,\n level: parent.level + 1\n };\n const childKey = getRowIdentity(node, rowKey);\n if (childKey === undefined || childKey === null) {\n throw new Error('for nested data item, row-key is required.');\n }\n cur = { ...treeData[childKey] };\n // 对于当前节点,分成有无子节点两种情况。\n // 如果包含子节点的,设置 expanded 属性。\n // 对于它子节点的 display 属性由它本身的 expanded 与 display 共同决定。\n if (cur) {\n innerTreeRowData.expanded = cur.expanded;\n // 懒加载的某些节点,level 未知\n cur.level = cur.level || innerTreeRowData.level;\n cur.display = !!(cur.expanded && innerTreeRowData.display);\n if (typeof cur.lazy === 'boolean') {\n if (typeof cur.loaded === 'boolean' && cur.loaded) {\n innerTreeRowData.noLazyChildren = !(cur.children && cur.children.length);\n }\n innerTreeRowData.loading = cur.loading;\n }\n }\n i++;\n tmp.push(this.rowRender(node, $index + i, innerTreeRowData));\n if (cur) {\n const nodes = lazyTreeNodeMap[childKey] || node[childrenColumnName];\n traverse(nodes, cur);\n }\n });\n };\n // 对于 root 节点,display 一定为 true\n cur.display = true;\n const nodes = lazyTreeNodeMap[key] || row[childrenColumnName];\n traverse(nodes, cur);\n }\n return tmp;\n } else {\n return this.rowRender(row, $index);\n }\n }\n }\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('transition',{attrs:{\"name\":\"el-zoom-in-top\"}},[(_vm.multiple)?_c('div',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.handleOutsideClick),expression:\"handleOutsideClick\"},{name:\"show\",rawName:\"v-show\",value:(_vm.showPopper),expression:\"showPopper\"}],staticClass:\"el-table-filter\"},[_c('div',{staticClass:\"el-table-filter__content\"},[_c('el-scrollbar',{attrs:{\"wrap-class\":\"el-table-filter__wrap\"}},[_c('el-checkbox-group',{staticClass:\"el-table-filter__checkbox-group\",model:{value:(_vm.filteredValue),callback:function ($$v) {_vm.filteredValue=$$v},expression:\"filteredValue\"}},_vm._l((_vm.filters),function(filter){return _c('el-checkbox',{key:filter.value,attrs:{\"label\":filter.value}},[_vm._v(_vm._s(filter.text))])}),1)],1)],1),_c('div',{staticClass:\"el-table-filter__bottom\"},[_c('button',{class:{ 'is-disabled': _vm.filteredValue.length === 0 },attrs:{\"disabled\":_vm.filteredValue.length === 0},on:{\"click\":_vm.handleConfirm}},[_vm._v(_vm._s(_vm.t('el.table.confirmFilter')))]),_c('button',{on:{\"click\":_vm.handleReset}},[_vm._v(_vm._s(_vm.t('el.table.resetFilter')))])])]):_c('div',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.handleOutsideClick),expression:\"handleOutsideClick\"},{name:\"show\",rawName:\"v-show\",value:(_vm.showPopper),expression:\"showPopper\"}],staticClass:\"el-table-filter\"},[_c('ul',{staticClass:\"el-table-filter__list\"},[_c('li',{staticClass:\"el-table-filter__list-item\",class:{ 'is-active': _vm.filterValue === undefined || _vm.filterValue === null },on:{\"click\":function($event){return _vm.handleSelect(null)}}},[_vm._v(_vm._s(_vm.t('el.table.clearFilter')))]),_vm._l((_vm.filters),function(filter){return _c('li',{key:filter.value,staticClass:\"el-table-filter__list-item\",class:{ 'is-active': _vm.isActive(filter) },attrs:{\"label\":filter.value},on:{\"click\":function($event){return _vm.handleSelect(filter.value)}}},[_vm._v(_vm._s(filter.text))])})],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nvar dropdowns = [];\n\n!Vue.prototype.$isServer && document.addEventListener('click', function(event) {\n dropdowns.forEach(function(dropdown) {\n var target = event.target;\n if (!dropdown || !dropdown.$el) return;\n if (target === dropdown.$el || dropdown.$el.contains(target)) {\n return;\n }\n dropdown.handleOutsideClick && dropdown.handleOutsideClick(event);\n });\n});\n\nexport default {\n open(instance) {\n if (instance) {\n dropdowns.push(instance);\n }\n },\n\n close(instance) {\n var index = dropdowns.indexOf(instance);\n if (index !== -1) {\n dropdowns.splice(instance, 1);\n }\n }\n};\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"el-checkbox-group\",attrs:{\"role\":\"group\",\"aria-label\":\"checkbox-group\"}},[_vm._t(\"default\")],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!./checkbox-group.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!./checkbox-group.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./checkbox-group.vue?vue&type=template&id=ca89dba2&\"\nimport script from \"./checkbox-group.vue?vue&type=script&lang=js&\"\nexport * from \"./checkbox-group.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 ElCheckboxGroup from '../checkbox/src/checkbox-group.vue';\n\n/* istanbul ignore next */\nElCheckboxGroup.install = function(Vue) {\n Vue.component(ElCheckboxGroup.name, ElCheckboxGroup);\n};\n\nexport default ElCheckboxGroup;\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!./filter-panel.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!./filter-panel.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./filter-panel.vue?vue&type=template&id=2ddfc96a&\"\nimport script from \"./filter-panel.vue?vue&type=script&lang=js&\"\nexport * from \"./filter-panel.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 Vue from 'vue';\nimport { hasClass, addClass, removeClass } from 'element-ui/src/utils/dom';\nimport ElCheckbox from 'element-ui/packages/checkbox';\nimport FilterPanel from './filter-panel.vue';\nimport LayoutObserver from './layout-observer';\nimport { mapStates } from './store/helper';\n\nconst getAllColumns = (columns) => {\n const result = [];\n columns.forEach((column) => {\n if (column.children) {\n result.push(column);\n result.push.apply(result, getAllColumns(column.children));\n } else {\n result.push(column);\n }\n });\n return result;\n};\n\nconst convertToRows = (originColumns) => {\n let maxLevel = 1;\n const traverse = (column, parent) => {\n if (parent) {\n column.level = parent.level + 1;\n if (maxLevel < column.level) {\n maxLevel = column.level;\n }\n }\n if (column.children) {\n let colSpan = 0;\n column.children.forEach((subColumn) => {\n traverse(subColumn, column);\n colSpan += subColumn.colSpan;\n });\n column.colSpan = colSpan;\n } else {\n column.colSpan = 1;\n }\n };\n\n originColumns.forEach((column) => {\n column.level = 1;\n traverse(column);\n });\n\n const rows = [];\n for (let i = 0; i < maxLevel; i++) {\n rows.push([]);\n }\n\n const allColumns = getAllColumns(originColumns);\n\n allColumns.forEach((column) => {\n if (!column.children) {\n column.rowSpan = maxLevel - column.level + 1;\n } else {\n column.rowSpan = 1;\n }\n rows[column.level - 1].push(column);\n });\n\n return rows;\n};\n\nexport default {\n name: 'ElTableHeader',\n\n mixins: [LayoutObserver],\n\n render(h) {\n const originColumns = this.store.states.originColumns;\n const columnRows = convertToRows(originColumns, this.columns);\n // 是否拥有多级表头\n const isGroup = columnRows.length > 1;\n if (isGroup) this.$parent.isGroup = true;\n return (\n \n \n {\n this.columns.map(column => )\n }\n {\n this.hasGutter ? : ''\n }\n \n \n {\n this._l(columnRows, (columns, rowIndex) =>\n \n {\n columns.map((column, cellIndex) => ( this.handleMouseMove($event, column) }\n on-mouseout={ this.handleMouseOut }\n on-mousedown={ ($event) => this.handleMouseDown($event, column) }\n on-click={ ($event) => this.handleHeaderClick($event, column) }\n on-contextmenu={ ($event) => this.handleHeaderContextMenu($event, column) }\n style={ this.getHeaderCellStyle(rowIndex, cellIndex, columns, column) }\n class={ this.getHeaderCellClass(rowIndex, cellIndex, columns, column) }\n key={ column.id }>\n
0 ? 'highlight' : '', column.labelClassName] }>\n {\n column.renderHeader\n ? column.renderHeader.call(this._renderProxy, h, { column, $index: cellIndex, store: this.store, _self: this.$parent.$vnode.context })\n : column.label\n }\n {\n column.sortable ? ( this.handleSortClick($event, column) }>\n this.handleSortClick($event, column, 'ascending') }>\n \n this.handleSortClick($event, column, 'descending') }>\n \n ) : ''\n }\n {\n column.filterable ? ( this.handleFilterClick($event, column) }>\n \n ) : ''\n }\n
\n ))\n }\n {\n this.hasGutter ? : ''\n }\n \n )\n }\n \n \n );\n },\n\n props: {\n fixed: String,\n store: {\n required: true\n },\n border: Boolean,\n defaultSort: {\n type: Object,\n default() {\n return {\n prop: '',\n order: ''\n };\n }\n }\n },\n\n components: {\n ElCheckbox\n },\n\n computed: {\n table() {\n return this.$parent;\n },\n\n hasGutter() {\n return !this.fixed && this.tableLayout.gutterWidth;\n },\n\n ...mapStates({\n columns: 'columns',\n isAllSelected: 'isAllSelected',\n leftFixedLeafCount: 'fixedLeafColumnsLength',\n rightFixedLeafCount: 'rightFixedLeafColumnsLength',\n columnsCount: states => states.columns.length,\n leftFixedCount: states => states.fixedColumns.length,\n rightFixedCount: states => states.rightFixedColumns.length\n })\n },\n\n created() {\n this.filterPanels = {};\n },\n\n mounted() {\n // nextTick 是有必要的 https://github.com/ElemeFE/element/pull/11311\n this.$nextTick(() => {\n const { prop, order } = this.defaultSort;\n const init = true;\n this.store.commit('sort', { prop, order, init });\n });\n },\n\n beforeDestroy() {\n const panels = this.filterPanels;\n for (let prop in panels) {\n if (panels.hasOwnProperty(prop) && panels[prop]) {\n panels[prop].$destroy(true);\n }\n }\n },\n\n methods: {\n isCellHidden(index, columns) {\n let start = 0;\n for (let i = 0; i < index; i++) {\n start += columns[i].colSpan;\n }\n const after = start + columns[index].colSpan - 1;\n if (this.fixed === true || this.fixed === 'left') {\n return after >= this.leftFixedLeafCount;\n } else if (this.fixed === 'right') {\n return start < this.columnsCount - this.rightFixedLeafCount;\n } else {\n return (after < this.leftFixedLeafCount) || (start >= this.columnsCount - this.rightFixedLeafCount);\n }\n },\n\n getHeaderRowStyle(rowIndex) {\n const headerRowStyle = this.table.headerRowStyle;\n if (typeof headerRowStyle === 'function') {\n return headerRowStyle.call(null, { rowIndex });\n }\n return headerRowStyle;\n },\n\n getHeaderRowClass(rowIndex) {\n const classes = [];\n\n const headerRowClassName = this.table.headerRowClassName;\n if (typeof headerRowClassName === 'string') {\n classes.push(headerRowClassName);\n } else if (typeof headerRowClassName === 'function') {\n classes.push(headerRowClassName.call(null, { rowIndex }));\n }\n\n return classes.join(' ');\n },\n\n getHeaderCellStyle(rowIndex, columnIndex, row, column) {\n const headerCellStyle = this.table.headerCellStyle;\n if (typeof headerCellStyle === 'function') {\n return headerCellStyle.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n });\n }\n return headerCellStyle;\n },\n\n getHeaderCellClass(rowIndex, columnIndex, row, column) {\n const classes = [column.id, column.order, column.headerAlign, column.className, column.labelClassName];\n\n if (rowIndex === 0 && this.isCellHidden(columnIndex, row)) {\n classes.push('is-hidden');\n }\n\n if (!column.children) {\n classes.push('is-leaf');\n }\n\n if (column.sortable) {\n classes.push('is-sortable');\n }\n\n const headerCellClassName = this.table.headerCellClassName;\n if (typeof headerCellClassName === 'string') {\n classes.push(headerCellClassName);\n } else if (typeof headerCellClassName === 'function') {\n classes.push(headerCellClassName.call(null, {\n rowIndex,\n columnIndex,\n row,\n column\n }));\n }\n\n classes.push('el-table__cell');\n\n return classes.join(' ');\n },\n\n toggleAllSelection() {\n this.store.commit('toggleAllSelection');\n },\n\n handleFilterClick(event, column) {\n event.stopPropagation();\n const target = event.target;\n let cell = target.tagName === 'TH' ? target : target.parentNode;\n if (hasClass(cell, 'noclick')) return;\n cell = cell.querySelector('.el-table__column-filter-trigger') || cell;\n const table = this.$parent;\n\n let filterPanel = this.filterPanels[column.id];\n\n if (filterPanel && column.filterOpened) {\n filterPanel.showPopper = false;\n return;\n }\n\n if (!filterPanel) {\n filterPanel = new Vue(FilterPanel);\n this.filterPanels[column.id] = filterPanel;\n if (column.filterPlacement) {\n filterPanel.placement = column.filterPlacement;\n }\n filterPanel.table = table;\n filterPanel.cell = cell;\n filterPanel.column = column;\n !this.$isServer && filterPanel.$mount(document.createElement('div'));\n }\n\n setTimeout(() => {\n filterPanel.showPopper = true;\n }, 16);\n },\n\n handleHeaderClick(event, column) {\n if (!column.filters && column.sortable) {\n this.handleSortClick(event, column);\n } else if (column.filterable && !column.sortable) {\n this.handleFilterClick(event, column);\n }\n\n this.$parent.$emit('header-click', column, event);\n },\n\n handleHeaderContextMenu(event, column) {\n this.$parent.$emit('header-contextmenu', column, event);\n },\n\n handleMouseDown(event, column) {\n if (this.$isServer) return;\n if (column.children && column.children.length > 0) return;\n /* istanbul ignore if */\n if (this.draggingColumn && this.border) {\n this.dragging = true;\n\n this.$parent.resizeProxyVisible = true;\n\n const table = this.$parent;\n const tableEl = table.$el;\n const tableLeft = tableEl.getBoundingClientRect().left;\n const columnEl = this.$el.querySelector(`th.${column.id}`);\n const columnRect = columnEl.getBoundingClientRect();\n const minLeft = columnRect.left - tableLeft + 30;\n\n addClass(columnEl, 'noclick');\n\n this.dragState = {\n startMouseLeft: event.clientX,\n startLeft: columnRect.right - tableLeft,\n startColumnLeft: columnRect.left - tableLeft,\n tableLeft\n };\n\n const resizeProxy = table.$refs.resizeProxy;\n resizeProxy.style.left = this.dragState.startLeft + 'px';\n\n document.onselectstart = function() { return false; };\n document.ondragstart = function() { return false; };\n\n const handleMouseMove = (event) => {\n const deltaLeft = event.clientX - this.dragState.startMouseLeft;\n const proxyLeft = this.dragState.startLeft + deltaLeft;\n\n resizeProxy.style.left = Math.max(minLeft, proxyLeft) + 'px';\n };\n\n const handleMouseUp = () => {\n if (this.dragging) {\n const {\n startColumnLeft,\n startLeft\n } = this.dragState;\n const finalLeft = parseInt(resizeProxy.style.left, 10);\n const columnWidth = finalLeft - startColumnLeft;\n column.width = column.realWidth = columnWidth;\n table.$emit('header-dragend', column.width, startLeft - startColumnLeft, column, event);\n\n this.store.scheduleLayout();\n\n document.body.style.cursor = '';\n this.dragging = false;\n this.draggingColumn = null;\n this.dragState = {};\n\n table.resizeProxyVisible = false;\n }\n\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.onselectstart = null;\n document.ondragstart = null;\n\n setTimeout(function() {\n removeClass(columnEl, 'noclick');\n }, 0);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n }\n },\n\n handleMouseMove(event, column) {\n if (column.children && column.children.length > 0) return;\n let target = event.target;\n while (target && target.tagName !== 'TH') {\n target = target.parentNode;\n }\n\n if (!column || !column.resizable) return;\n\n if (!this.dragging && this.border) {\n let rect = target.getBoundingClientRect();\n\n const bodyStyle = document.body.style;\n if (rect.width > 12 && rect.right - event.pageX < 8) {\n bodyStyle.cursor = 'col-resize';\n if (hasClass(target, 'is-sortable')) {\n target.style.cursor = 'col-resize';\n }\n this.draggingColumn = column;\n } else if (!this.dragging) {\n bodyStyle.cursor = '';\n if (hasClass(target, 'is-sortable')) {\n target.style.cursor = 'pointer';\n }\n this.draggingColumn = null;\n }\n }\n },\n\n handleMouseOut() {\n if (this.$isServer) return;\n document.body.style.cursor = '';\n },\n\n toggleOrder({ order, sortOrders }) {\n if (order === '') return sortOrders[0];\n const index = sortOrders.indexOf(order || null);\n return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1];\n },\n\n handleSortClick(event, column, givenOrder) {\n event.stopPropagation();\n let order = column.order === givenOrder\n ? null\n : (givenOrder || this.toggleOrder(column));\n\n let target = event.target;\n while (target && target.tagName !== 'TH') {\n target = target.parentNode;\n }\n\n if (target && target.tagName === 'TH') {\n if (hasClass(target, 'noclick')) {\n removeClass(target, 'noclick');\n return;\n }\n }\n\n if (!column.sortable) return;\n\n const states = this.store.states;\n let sortProp = states.sortProp;\n let sortOrder;\n const sortingColumn = states.sortingColumn;\n\n if (sortingColumn !== column || (sortingColumn === column && sortingColumn.order === null)) {\n if (sortingColumn) {\n sortingColumn.order = null;\n }\n states.sortingColumn = column;\n sortProp = column.property;\n }\n\n if (!order) {\n sortOrder = column.order = null;\n } else {\n sortOrder = column.order = order;\n }\n\n states.sortProp = sortProp;\n states.sortOrder = sortOrder;\n\n this.store.commit('changeSortCondition');\n }\n },\n\n data() {\n return {\n draggingColumn: null,\n dragging: false,\n dragState: {}\n };\n }\n};\n","import LayoutObserver from './layout-observer';\nimport { mapStates } from './store/helper';\n\nexport default {\n name: 'ElTableFooter',\n\n mixins: [LayoutObserver],\n\n render(h) {\n let sums = [];\n if (this.summaryMethod) {\n sums = this.summaryMethod({ columns: this.columns, data: this.store.states.data });\n } else {\n this.columns.forEach((column, index) => {\n if (index === 0) {\n sums[index] = this.sumText;\n return;\n }\n const values = this.store.states.data.map(item => Number(item[column.property]));\n const precisions = [];\n let notNumber = true;\n values.forEach(value => {\n if (!isNaN(value)) {\n notNumber = false;\n let decimal = ('' + value).split('.')[1];\n precisions.push(decimal ? decimal.length : 0);\n }\n });\n const precision = Math.max.apply(null, precisions);\n if (!notNumber) {\n sums[index] = values.reduce((prev, curr) => {\n const value = Number(curr);\n if (!isNaN(value)) {\n return parseFloat((prev + curr).toFixed(Math.min(precision, 20)));\n } else {\n return prev;\n }\n }, 0);\n } else {\n sums[index] = '';\n }\n });\n }\n\n return (\n \n \n {\n this.columns.map(column => )\n }\n {\n this.hasGutter ? : ''\n }\n \n \n \n {\n this.columns.map((column, cellIndex) => \n
\n {\n sums[cellIndex]\n }\n
\n )\n }\n {\n this.hasGutter ? : ''\n }\n \n \n \n );\n },\n\n props: {\n fixed: String,\n store: {\n required: true\n },\n summaryMethod: Function,\n sumText: String,\n border: Boolean,\n defaultSort: {\n type: Object,\n default() {\n return {\n prop: '',\n order: ''\n };\n }\n }\n },\n\n computed: {\n table() {\n return this.$parent;\n },\n\n hasGutter() {\n return !this.fixed && this.tableLayout.gutterWidth;\n },\n\n ...mapStates({\n columns: 'columns',\n isAllSelected: 'isAllSelected',\n leftFixedLeafCount: 'fixedLeafColumnsLength',\n rightFixedLeafCount: 'rightFixedLeafColumnsLength',\n columnsCount: states => states.columns.length,\n leftFixedCount: states => states.fixedColumns.length,\n rightFixedCount: states => states.rightFixedColumns.length\n })\n },\n\n methods: {\n isCellHidden(index, columns, column) {\n if (this.fixed === true || this.fixed === 'left') {\n return index >= this.leftFixedLeafCount;\n } else if (this.fixed === 'right') {\n let before = 0;\n for (let i = 0; i < index; i++) {\n before += columns[i].colSpan;\n }\n return before < this.columnsCount - this.rightFixedLeafCount;\n } else if (!this.fixed && column.fixed) { // hide cell when footer instance is not fixed and column is fixed\n return true;\n } else {\n return (index < this.leftFixedCount) || (index >= this.columnsCount - this.rightFixedCount);\n }\n },\n\n getRowClasses(column, cellIndex) {\n const classes = [column.id, column.align, column.labelClassName];\n if (column.className) {\n classes.push(column.className);\n }\n if (this.isCellHidden(cellIndex, this.columns, column)) {\n classes.push('is-hidden');\n }\n if (!column.children) {\n classes.push('is-leaf');\n }\n return classes;\n }\n }\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!./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!./table.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./table.vue?vue&type=template&id=69bcd61e&\"\nimport script from \"./table.vue?vue&type=script&lang=js&\"\nexport * from \"./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","import ElTable from './src/table';\n\n/* istanbul ignore next */\nElTable.install = function(Vue) {\n Vue.component(ElTable.name, ElTable);\n};\n\nexport default ElTable;\n","import 'element/css/table.scss'\n\nimport Table from 'element-ui/packages/table'\n\nexport default Table\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":""}